2014-12-19 26 views
2

我在Swift中有两个数组,一个Customer数组和一个Order数组。在Swift中发布字典数组作为JSON

var orders = _orderService.GetOrders(...) //just simplifying 
var customers = _customerService.GetCustomers(...) //simplifying obviously 

现在,我有这些作为数组<订单>和Array <客户>,我想将它们转换为JSON,并在后到我的网络服务给他们。

我的客户和订单类都有一个.toDictionary()实现,允许他们将自己表示为Dictionary,这对于json是完美的!

我想,为了正确地让他们一次性地表示为JSON,我可以做这样的事情:

var customerJSON = customers.map({"\(NSJSONSerialization.dataWithJSONObject($0.toDictionary(), options: nil, error: &err))"}) 

所以此工程,并产生一个字符串数组,在每一行阵列是一个序列化的客户。我可以对我的订单采用相同的方法,并且可以将它们组合起来生成一个巨大的字符串数组,每个字符串都表示为JSON。

我现在卡在什么是该怎么做这个数组正确地张贴它。

request.HTTPMethod = "POST" 
    request.HTTPBody = <<WHAT GOES HERE TO SEND VALID JSON OVER??>> 
    request.addValue("application/json", forHTTPHeaderField: "Content-Type") 
    request.addValue("application/json", forHTTPHeaderField: "Accept") 

非常感谢大家!

+0

您应该创建所有NSDictionarys的一个NSArray和序列化。 –

回答

0

简单这样的:

的Objective-C:

NSDictionary *data = @{@"orders": orders, @"customers":customers}; 
    NSData *jsondata = [NSJSONSerialization dataWithJSONObject:data options:0 error:&error]; 
    [request setHTTPBody:jsondata]; 

斯威夫特:

let data = ["orders": orders, "customers":customers] 
    let jsondata = NSJSONSerialization.dataWithJSONObject(data, options: .allZeros, error: nil) 
    request.HTTPBody = jsondata