1

Я написал некоторый код, чтобы поместить словарь NS (Mutable) в NSArray. Но после добавления словаря в массив, кажется, он создает отдельные словари для каждой пары ключ-значение. См. Пример ниже.Как добавить NSArray из NSDictionaries в запрос 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, я действительно получаю ожидаемый результат. Но когда я отправляю его на задний план, он становится испорченным.

Я создал к новому 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), а также не мой back-end (Symfony PHP).

EDIT *

кажется мне нужно добавить JSon Serializer к моей просьбе.

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

принять NSMutableArray и AddObject в него затем установить этот массив в словаре –

+0

Ваш код выглядит хорошо, это дает ожидаемый выход. –

+0

Ваш код отлично подходит. Это дает то, что вы ожидаете. – Pushkraj

ответ

0

Кажется, мне нужно добавить JSON Serializer по моей просьбе.

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

я запускаю свой код в моем х-кода я получил ниже выхода:

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

}

И это то, что you'r ожидал, я не думаю, что есть какие-либо неправильно в вашем коде, поэтому повторите проверку, потому что в противном случае я также получаю неправильный ответ.

+0

см. Мое редактирование, я нашел некоторые вещи. –

Смежные вопросы