Я провел несколько тестов с TouchJSON прошлой ночью, и он работал довольно хорошо вообще для простых случаев. Я использую следующий код, чтобы прочитать некоторые JSON содержимого из файла и преобразовал его:Deserializing комплексный результат JSON (массив словарей) с TouchJSON
NSString *jsonString = [[NSString alloc] initWithContentsOfFile:@"data.json"];
NSData *jsonData = [jsonString dataUsingEncoding:NSUTF32BigEndianStringEncoding];
NSError *error = nil;
NSDictionary *items = [[CJSONDeserializer deserializer] deserializeAsDictionary:jsonData error:&error];
NSLog(@"total items: %d", [items count]);
NSLog(@"error: %@", [error localizedDescription]);
Это работает хорошо, если у меня есть очень простой объект JSON в файле (т.е. словарь):
{"id": "54354", "name": "boohoo"}
Таким образом, я был в состоянии получить доступ к массиву значений, так как я хотел, чтобы получить элемент на основе его индекса в списке:
NSArray *items_list = [items allValues];
NSString *name = [items_list objectAtIndex:1];
(Я понимаю, что я мог бы Фет ched имя со словарем API)
Теперь я хотел бы десериализовать полукомплексную строку JSON, которая представляет собой набор словарей. Примером такой строки JSON ниже:
[{"id": "123456", "name": "touchjson"}, {"id": "3456", "name": "bleh"}]
Когда я пытаюсь запустить тот же код, указанный выше в отношении этого нового контента в файле data.json, я не получаю никаких результатов обратно. Мой вызов NSLog() говорит «total items: 0», и никакая ошибка не возвращается в объекте NSError.
Любые подсказки о том, что происходит? Я полностью потерял себя от того, что делать, поскольку для TouchJSON недостаточно документации для документации и гораздо меньше примеров использования.
Спасибо, я смог выяснить, как десериализовать эту сложную строку JSON с json-framework. – jpm 2008-11-14 03:47:33
Я использую эту фреймворк для сложных json-структур и до сих пор не столкнулся с какими-либо проблемами. – seanalltogether 2008-11-14 03:47:47
Ссылка мертва! – Gustav 2012-06-29 08:26:14