YAJL — JSON на iOS/iPhone

В моем приложении для iPhone я пытаюсь использовать библиотеку JSON (YAJL) для создания строки JSON, которая выглядит следующим образом:

{"user": 
  {"name":"Jon", "username":"jon22", "password":"passw@rd", "email":"[email protected]"}
}

Но я не могу понять методы YAJL для создания этого.

Я пробовал следующее:

 NSArray *params = [NSArray arrayWithObjects:@"Jon", @"jon22", @"passw@rd", @"[email protected]", nil];
 NSArray *keys = [NSArray arrayWithObjects:@"name", @"username", @"password", @"email", nil];

 NSDictionary *userDictionary = [NSDictionary dictionaryWithObjects:params forKeys:keys];
 NSString *JSONString = [userDictionary yajl_JSONString];

Однако возвращаемая строка не обернута внешним «пользователем». Как я могу использовать YAJL для создания этой строки json? Есть ли у кого-нибудь опыт в этом???

Большое спасибо, Бретт.


person Brett    schedule 06.09.2011    source источник


Ответы (2)


Я использую не YAJL, а SBJSON, который Apple использует и в iOS. ..

Во всяком случае, библиотека ведет себя правильно: вы не создаете «пользовательский» словарь!

Вам нужно сделать что-то вроде:

NSDictionary *serialize = [NSDictionary dictionaryWithObject:userDictionary forKey:@"user"];

А затем "JSON-ize" этот.

Это связано с тем, что когда вы вызываете -yajl_JSONString для userDictionary, вы используете userDictionary в качестве своего «корневого объекта». Если вы хотите поместить это в другой словарь, вам нужно сделать это явно.

person ItalyPaleAle    schedule 06.09.2011
comment
Хорошо, верно. Это то, что мне нужно знать, как это сделать. Любые идеи, как явно сделать это? - person Brett; 07.09.2011
comment
Я же говорил :) Создайте объект NSDictionary, подобный сериализации, которую я написал, затем вызовите [serialize yajl_JSONString] вместо [userDictionary yajl_JSONString]... Именно так! - person ItalyPaleAle; 07.09.2011
comment
А, это я неправильно понял. Хорошо, теперь это имеет смысл! Большое спасибо! - person Brett; 07.09.2011

Я настоятельно рекомендую вам ознакомиться с JSONKit https://github.com/johnezang/JSONKit. Парсеры JSON и нашли его самым простым.

Также документация потрясающая.

person Shaun    schedule 06.09.2011