Создать формат JSON в iOS

У меня есть две отправки данных на сервер в формате JSON, ниже приведен формат, который нужен серверу.

{
"employees": [
{ "firstName":"John" "middelName":"M" "lastName":"Doe" }, 
{ "firstName":"Anna" "middelName":"J" "lastName":"Smith" }, 
{ "firstName":"Peter" "middelName":"K" "lastName":"Jones" }
]
}

Теперь у меня есть три NSMutableArrays, первый массив содержит firstName, второй массив содержит middleName, а третий массив содержит lastName,

Если бы это была всего лишь одна запись, я мог бы создать ее таким образом.

NSDictionary *dictionary = @{@"employees": @{@"firstName":"John" "middelName":"M" "lastName":"Doe"}};

    NSError *error;
    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dictionary options:NSJSONWritingPrettyPrinted error:&error];
    if (!jsonData) {
        NSLog(@"Error creating JSON object: %@", [error localizedDescription]);
    }

Теперь я запутался в том, как создать массив записей


person Ranjit    schedule 31.05.2014    source источник
comment
FirstName, middleName и lastName не являются массивами. Они являются ключевыми значениями в словаре. Массивы находятся внутри сотрудников словаря в фигурных скобках {} с разделителями-запятыми (,). Таким образом, ваши массивы будут такими: Массив 1 — {firstName:John middelName:M lastName:Doe} Массив 2 — {firstName:Anna middelName:J lastName:Smith} Массив 3 — {firstName:Peter middelName:K lastName:Jones} К вашему сведению   -  person try catch finally    schedule 31.05.2014


Ответы (2)


Попробуйте что-то вроде этого:

/* assuming the arrays have equal length, no error checking */
NSMutableArray * employees = [NSMutableArray new];
NSUInteger idx = 0;
for(NSString * firstName in firstNames) {
    [employees addObject:@{
        @"firstName":firstName,
        @"middleName":[middleNames objectAtIndex:idx],
        @"lastName":[lastNames objectAtIndex:idx]
    }];
    idx++;
}
id sendThis = @{@"employees": employees};
/* do your JSON stuff with sendThis */
person djromero    schedule 31.05.2014
comment
Эй, спасибо, у меня есть небольшие сомнения, у меня есть еще один массив списка удаленных сотрудников, и я хочу также прикрепить его, так как я могу это сделать, и длина массива deleteEmployee не одинакова. - person Ranjit; 31.05.2014
comment
Также я не получаю квадратные скобки в конце - person Ranjit; 31.05.2014
comment
Я не знаю, что вы имеете в виду под отсутствием квадратных скобок. Я написал код прямо здесь, поэтому он может не скомпилироваться. Я предлагаю обратиться к книге/онлайн-учебнику по Objective-C и посмотреть, как вы можете зацикливаться на массиве, как работать со словарями и т. д. И, наконец, если ответ сработал для вас, рассмотрите возможность его принятия. - person djromero; 31.05.2014

[]---> массив, {}--> словарь

кодировка может быть такой (только пример)

NSArray *local_array = @[@{@"f":@"ew",@"d":@"new"}];

NSDictionary *dictionary = @{@"employees": local_array};
person Debanjan    schedule 31.05.2014
comment
Эй, я пытался с вашим кодом, но когда я NSlog, чтобы увидеть формат, я вижу только цветочные скобки, а не квадратные скобки. - person Ranjit; 31.05.2014