Я создал веб-сервис, который возвращает JSON или так, я думаю.Возвращенные данные выглядят так:
{"invoice":{"id":44,"number":42,"amount":1139.99,"checkoutStarted":true,"checkoutCompleted":true}}
Для меня это выглядит как действительный JSON.
Используя собственный сериализатор JSON в iOS5, я беру данные и собираю их как NSDictionary.
NSError *error;
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:[request responseData] options:kNilOptions error:&error];
NSLog(@"json count: %i, key: %@, value: %@", [json count], [json allKeys], [json allValues]);
Вывод журнала:
json count: 1, key: (
invoice
), value: (
{
amount = "1139.99";
checkoutCompleted = 1;
checkoutStarted = 1;
id = 44;
number = 42;
}
)
Итак, мне кажется, что данные JSON имеют ключ NSString "invoice" и его значение равно NSArray ({amount = ..., check...})
Итак, я конвертирую значения в NSArray:
NSArray *latestInvoice = [json objectForKey:@"invoice"];
Но при переходе он говорит, что latestInvoice не является CFArray.если я распечатываю значения внутри массива:
for (id data in latestInvoice) {
NSLog(@"data is %@", data);
}
Результат:
data is id
data is checkoutStarted
data is ..
Я не понимаю, почему он возвращает только «id» вместо «id =»44" .Если я установлю для данных JSON значение NSDictionary, я знаю, что ключом является NSString, но каково значение?Это NSArray или что-то еще?
Это учебник, который я прочитал: http://www.raywenderlich.com/5492/working-with-json-in-ios-5
Редактировать: Исходя из ответа, кажется, что "значение" NSDictionary * json является еще однимNSDictionary.Я предполагаю, что это был NSArray или NSString, что неправильно.Другими словами, [K, V] для NSDictionary * json = [@ "invoice", NSDictionary]