1

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

iOS 不支持 JSON 将空 NSArray 编码为 [] 吗?

我尝试更改 dataWithJSONObject: 中的“选项”,但没有成功。将 @"[]" 作为常规 ol' 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];

谢谢您的帮助!

4

1 回答 1

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 这样的代理检查请求。

于 2013-08-14T13:31:44.773 回答