1

JSON を Rails バックエンドに送信しようとしています。ペイロード (NSDictionary) をシリアル化するとき、空の配列は [ ] (空の配列) ではなく nil としてエンコードされます。

[] として空の NSArray をエンコードする JSON は iOS でサポートされていませんか?

dataWithJSONObject: 内の「オプション」を変更しようとしましたが、成功しませんでした。@"[]" を通常の古い 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

問題は iOS ではなく Rails にあると思われます。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 に答える