1

NSArray에 NS (Mutable) Dictionary를 넣는 코드를 작성했습니다. 그러나 배열에 사전을 추가 한 후에는 각 키 - 값 쌍에 대해 별도의 사전을 만드는 것으로 보입니다. 아래 예를 참조하십시오.AFJSONRequestSerializer 요청에 NSDictionaries의 NSArray를 어떻게 추가합니까?

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

편집을 참조하고 몇 가지를 발견했습니다. –

관련 문제