NSArray に NS(Mutable)Dictionary を配置するコードを書きました。しかし、辞書を配列に追加すると、キーと値のペアごとに個別の辞書が作成されるようです。以下の例を参照してください。
NSMutableDictionary *info = [[NSMutableDictionary alloc] init];
[info setObject:@"123" forKey:@"user_id"];
[info setObject:@"John" forKey:@"name"];
NSArray *array = [NSArray arrayWithObject:info];
NSMutableDictionary *htmlParams = [[NSMutableDictionary alloc] init];
[htmlParams setObject:array forKey:@"users"];
期待される出力:
{
"users": [
{
"user_id": 123,
"name": "John
}
]
}
私が得るもの:
{
"users": [
{
"user_id": 123,
}, {
"name": "John
}
]
}
私は何を間違っていますか?
ご協力いただきありがとうございます!!
編集*さらにいくつか試してみましたが、問題が何であるかを理解したようですが、それでも奇妙に思えます。
ちょっとした背景: NSDictionary をログに記録すると、確かに期待どおりの出力が得られます。しかし、バックエンドに送信すると、めちゃくちゃになります。
新しい NSDictionaries を (オブジェクト リテラルとして) 作成しました。
1:
NSDictionary *info = @{
@[
@{
@"firstname": @"John",
@"lastname": @"Doe",
},
@{
@"firstname": @"Jane",
@"lastname": @"Da",
},
]
};
2:
NSDictionary *info = @{
@0: @{
@"firstname": @"John",
@"lastname": @"Doe",
},
@1: @{
@"firstname": @"Jane",
@"lastname": @"Da",
},
};
1: 問題が発生しました。配列内のすべての行が、バックエンドで異なる辞書として出力されます。2: 期待どおりに動作します。
この問題の原因はわかりませんが、私のパッケージ (AFNetworking) ではなく、バックエンド (Symfony PHP) でもないと確信しています。
編集 *
Json Serializer をリクエストに追加する必要があったようです。
AFJSONRequestSerializer *serializer = [AFJSONRequestSerializer serializer];
[serializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[serializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];
manager.requestSerializer = serializer;