Прошлой ночью я провел несколько тестов с TouchJSON, и в простых случаях он работал довольно хорошо. Я использую следующий код для чтения содержимого JSON из файла и десериализации его:
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];
(я понимаю, что мог бы получить имя с помощью словаря API)
Теперь я хотел бы десериализовать полусложную строку JSON, которая представляет собой массив словарей. Пример такой строки JSON приведен ниже:
[{"id": "123456", "name": "touchjson"}, {"id": "3456", "name": "bleh"}]
Когда я пытаюсь запустить тот же код выше для этого нового содержимого в файле data.json, я не получаю никаких результатов обратно. Мой вызов NSLog () говорит: «Всего элементов: 0», и в объекте NSError не возвращается ошибка.
Есть какие-нибудь подсказки о том, что происходит? Я совершенно заблудился, что делать, так как для TouchJSON не так много документации и примеров использования гораздо меньше.