Преобразование NSArray словарей в массив JSON в iOS - программирование
Подтвердить что ты не робот

Преобразование NSArray словарей в массив JSON в iOS

Мне нужно отправить NSArray на сервер в формате массива JSON. Как преобразовать его в JSON. Это образец моего NSArray, который должен пройти.

array([0] => array('latitude'=>'10.010490', 
                  'longitude'=>'76.360779', 
                   'altitude'=>'30.833334', 
                  'timestamp'=>'11:17:23', 
                      'speed'=>'0.00', 
                   'distance'=>'0.00');

[1] => array('latitude'=>'10.010688', 
            'longitude'=>'76.361378', 
             'altitude'=>'28.546305', 
            'timestamp'=>'11:19:26', 
                'speed'=>'1.614', 
             'distance'=>'198.525711')
 )`

и требуемый формат выглядит следующим образом

[
  { "latitude":"10.010490",
   "longitude":"76.360779",
    "altitude":"30.833334",
   "timestamp":"11:17:23", 
       "speed":"0.00",
    "distance":"0.00"
  },    
  {
   "latitude":"10.010688",
  "longitude":"76.361378",
   "altitude":"28.546305",
  "timestamp":"11:19:26",
      "speed":"1.614",
   "distance":"198.525711" 
  }
]

У кого-нибудь есть решение? Спасибо заранее.

4b9b3361

Ответ 1

NSDictionary *firstJsonDictionary = [NSDictionary dictionaryWithObjectsAndKeys:
                            @"10.010490", @"latitude",
                            @"76.360779", @"longitude",
                            @"30.833334", @"altitude",
                            @"11:17:23", @"timestamp",
                            @"0.00", @"speed",
                            @"0.00", @"distance",
                            nil];

  NSDictionary *secondJsonDictionary = [NSDictionary dictionaryWithObjectsAndKeys:
                            @"10.010490", @"latitude",
                            @"76.360779", @"longitude",
                            @"30.833334", @"altitude",
                            @"11:17:23", @"timestamp",
                            @"0.00", @"speed",
                            @"0.00", @"distance",
                            nil];

NSMutableArray * arr = [[NSMutableArray alloc] init];

[arr addObject:firstJsonDictionary];
[arr addObject:secondJsonDictionary];

NSData *jsonData2 = [NSJSONSerialization dataWithJSONObject:arr options:NSJSONWritingPrettyPrinted error:&error];
NSString *jsonString = [[NSString alloc] initWithData:jsonData2 encoding:NSUTF8StringEncoding];
NSLog(@"jsonData as string:\n%@", jsonString);

Ответ 2

Я бы рекомендовал SBJson-Framework.

Преобразование NSMutableArray выполняется так же просто, как NSString *jsonString = [yourArray JSONRepresentation];

Изменить: Джек Фарнандиш прав, вам нужно преобразовать его в NSDictionary, прежде чем вы сможете преобразовать его в Json. В моем примере NSMutableArray должен содержать словарь. Массив нужен только для создания квадратных скобок в начале и в конце строки.

Ответ 3

Самый простой и лучший подход!

Чтобы преобразовать NSArray или NSMutableArray в jsonString, вы можете сначала преобразовать его в NSData, а затем преобразовать в NSString. Используйте этот код

NSData* data = [ NSJSONSerialization dataWithJSONObject:yourArray options:NSJSONWritingPrettyPrinted error:nil ];
NSString *jsonString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

Это помогло мне и надеюсь, что это поможет вам. Всего наилучшего.

Ответ 4

Вы можете использовать встроить функции JSON в iOS или использовать внешний lib, например. JSONKit для преобразования ваших данных в JSON

Ответ 5

Сначала вы должны изменить структуру в класс NSDictionary и NSArray, содержащий объекты NSDictionary, а затем попробовать JSONKit в сериализации iOS 5 лучше, чем стандартный NSJSONSerialization.

Ответ 6

#import <JSONKit/JSON.h>

NSArray *array = // Your array here.
NSString *json = [array JSONString];

NSLog(@"%@", json);

JSONKit работает значительно лучше SBJson и другие в моих собственных и авторских тестах.

Ответ 7

Отметьте этот учебник, JSON в iOS 5.0 был четко объяснен (serailization, deserailization).

Ответ 8

Является ли служба, вызывающая службу RESTful?

Если это так, я настоятельно рекомендую использовать RestKit. Он выполняет сериализацию/десериализацию объектов. Он также поддерживает все сетевые подкрепления. Очень ценный и ухоженный.