1

私は、NSArrayにNS(Mutable)Dictionaryを入れるコードを書いています。しかし、配列に辞書を追加すると、キーと値のペアごとに別々の辞書が作成されるようです。以下の例を参照してください。NSJictionariesのNSArrayをAFJSONRequestSerializerリクエストに追加するにはどうすればよいですか?

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 
     } 
    ] 

} 

は私が間違って何をしているのですか?

ありがとうございます!

EDIT * 私はもう少しのことを試しましたが、それは問題の原因を考え出したようですが、それでも私にとっては奇妙なことです。

ちょっとした背景:NSDictionaryを記録すると、実際には期待される出力が得られます。しかし、私がバックエンドに送ったとき、それはうんざりします。

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:

は、私は(オブジェクトリテラルとして)新しいNSDictionariesに作成うまくいかない、アレイ内のすべての行は次のように出力され、私のバックエンドの別の辞書。 2:期待どおりに動作します。

この問題の原因は何もわかりませんが、私のパッケージ(AFNetworking)ではなく、バックエンド(Symfony PHP)でもないと確信しています。

EDIT *

は、私は私の要求にJSONシリアライザを追加するために必要なようです。

AFJSONRequestSerializer *serializer = [AFJSONRequestSerializer serializer]; 
[serializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 
[serializer setValue:@"application/json" forHTTPHeaderField:@"Accept"]; 
manager.requestSerializer = serializer; 
+0

は、あなたのコードは正常に見える、それが予想される出力を与えている辞書 –

+0

にその配列を設定し、それにNSMutableArrayのとのaddObjectを取ります。 –

+0

あなたのコードは完璧に素晴らしいです。あなたが期待していることを与えること。 – Pushkraj

答えて

0

私の要求にJSONシリアライザを追加する必要がありました。

AFJSONRequestSerializer *serializer = [AFJSONRequestSerializer serializer]; 
[serializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 
[serializer setValue:@"application/json" forHTTPHeaderField:@"Accept"]; 
manager.requestSerializer = serializer; 
0

私は、出力の下になった私のxのコードでコードを実行します。

{ 
users =  (
      { 
     name = John; 
     "user_id" = 123; 
    } 
); 

}

そして、これはyou'rが期待するものですが、私はいずれかが存在しているとは思いませんあなたのコードで間違っているので、もう一度チェックしてください。そうでなければ、私も間違った答えを得ます。

+0

私の編集を参照して、私はいくつかのものを見つけました。 –

関連する問題