JSON 使用 afnetworking 进行序列化

JSON Serialization using afnetworking

我在服务器中收到 json 的方式有问题。 有学生数组(字典) 将其包装在字典中:

var students:[[String: String]] = []
students.append(["id":"2", "name":"joe"]);
students.append(["id":"3", "name":"jake"]);
students.append(["id":"4", "name":"may"]);
students.append(["id":"1", "name":"donna"]);
let json:[String:[[String:String]]] = ["students" : students]

使用 NSJSONSerialization

打印 json 时
var data = NSJSONSerialization.dataWithJSONObject(json, options:  NSJSONWritingOptions.PrettyPrinted, error: &error)
println(NSString(data: data!, encoding: NSUTF8StringEncoding))

{
  "students" : [
    {
      "id" : "2",
      "name" : "joe"
    },
    {
      "id" : "3",
      "name" : "jake"
    },
    {
      "id" : "4",
      "name" : "may"
    },
    {
      "id" : "1",
      "name" : "donna"
    }
  ]
}

nodeJS 中,我得到 json 这样的:

{ 'students[][id]': [ '2', '3', '4', '1'],
  'students[][name]': [ 'joe', 'jack', 'may', 'donna' ]
}

编辑:Afn 代码:

 AFHTTPRequestOperationManager().POST("http://10.0.0.1:8080/echo", parameters: json,
            success: { (operation: AFHTTPRequestOperation!, responseObject: AnyObject!) -> Void in
                println(operation.responseString)

            }, failure: { (operation: AFHTTPRequestOperation!, error: NSError!) -> Void in
        })

在你的问题中,你正在使用你的字典结构,并手动创建 JSON。但是当您通过 AFNetworking 创建请求时,您没有指定 JSON 请求,而是 Content-Type of application/x-www-form-urlencoded 因为默认的 requestSerializerAFHTTPRequestSerializer .

如果您想在 AFNetworking 中创建 JSON 请求,您将:

let manager = AFHTTPRequestOperationManager()

manager.requestSerializer = AFJSONRequestSerializer(writingOptions: nil)

manager.POST("http://10.0.0.1:8080/echo", parameters: json, success: { (operation: AFHTTPRequestOperation!, responseObject: AnyObject!) -> Void in
    println(operation.responseString)

}, failure: { (operation: AFHTTPRequestOperation!, error: NSError!) -> Void in
    println(error)
})