2015-11-04 6 views
1

я в настоящее время отправкой некоторого простого JSON из приложения IOS к серверу, используя следующим:JSON строка с несколькими полями

NSData *jsonData = [@"{ \"item\": \"hat\" }" dataUsingEncoding:NSUTF8StringEncoding]; 

Я хотел бы добавить кучу других полей и значений.

Каким будет синтаксис для включения большего количества полей?

Что-то вроде

NSData *jsonData = [@"{ \"item\": \"hat\",\"id\":2,\"color\":\"blue\" }" dataUsingEncoding:NSUTF8StringEncoding]; 

Или есть лучший способ сделать это, например, посылая словарь?

+2

Почему бы не создать 'NSDictionary' со значениями вы хотите. Затем преобразовать словарь в строку JSON для отправки на сервер? – rmaddy

+0

Как сказал @rmaddy, создайте NSDictionary и сериализуйте его с помощью класса NSJSONSerialization (вы получите NSData) –

+1

JSON действительно должен рассматриваться только как метод сериализации, а не структура данных. Создайте соответствующую структуру данных, затем сериализуйте ее для доставки. –

ответ

0

первым создать NSDictionary, содержащий необходимые поля и сериализовать в формате JSON:

NSDictionary *package = @{@"item":@"hat",@"id":2,@"color":@"blue"}; 
NSData *data = [NSJSONSerialization dataWithJSONObject:package 
            options:0 error:&error]; 
1

Создание словаря:

NSMutableDictionary *dic = [[NSMutableDictionary alloc] init]; 
[dic setObject:'Value' forKey:'Key']; //adding values 

Вы можете использовать JSONKit

конвертировать NSDictionary в Json строку следующим образом:

NSString *jsonString = [dictionary JSONStringWithOptions:JKSerializeOptionNone error:nil]; 

или вы можете использовать SBJson

NSString *jsonString = [dictionary JSONRepresentation]; 

и вы можете сделать это без рамок третьей стороны:

NSError *error; 
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dictionaryOrArrayToOutput 
                options:NSJSONWritingPrettyPrinted // Pass 0 if you don't care about the readability of the generated string 
                error:&error]; 

if (! jsonData) { 
    NSLog(@"Got an error: %@", error); 
} else { 
    NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; 
} 
Смежные вопросы