iOS JSON序列化空数组序列化为nil而不是[]

时间:2013-08-09 20:51:15

标签: ios json nsjsonserialization

我正在尝试将一些JSON发送到Rails后端。序列化有效负载(NSDictionary)时,空数组的编码为nil而不是[](空数组)。

iOS上不支持JSON编码为空的NSArray吗?

我尝试更改dataWithJSONObject中的'options':没有成功。 发送@“[]”作为普通的'NSString也不起作用。

以下是代码:

NSData* jsonData = [NSJSONSerialization dataWithJSONObject:payload options:NSJSONReadingMutableLeaves error:&error];

[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:jsonData];
AFJSONRequestOperation *authRequest = [AFJSONRequestOperation JSONRequestOperationWithRequest:request  success:successBlock failure:failBlock];
[authRequest start];

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我怀疑问题来自Rails,而不是来自iOS,自3.2.11以来,Rails中出现了与安全漏洞有关的问题

https://github.com/rails/rails/issues/8832

https://github.com/rails/strong_parameters/issues/82

例如:

在您的身体{"bookmarks":[]}

中发送一个空数组

在Rails中被序列化为:{"bookmarks"=>nil}

为了确定问题的来源,您应该使用像Charles这样的代理检查请求。