我创建了一个网络服务,我这样认为。 退还的数据类似:
{"invoice":{"id":44,"number":42,"amount":1139.99,"checkoutStarted":true,"checkoutCompleted":true}}
对我来说,这看起来像是有效的智者。
在5世纪里,我使用本土的JSON序列izer,把数据作为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数据具有“发票”关键特性,其价值为NSArray <代码>(imount = ......,eck...})。
因此,我把价值转换为国家航空航天局:
NSArray *latestInvoice = [json objectForKey:@"invoice"];
但是,当步行时,它说,最近的是 发票不是非洲法郎。 如果我打印阵列中的数值:
for (id data in latestInvoice) {
NSLog(@"data is %@", data);
}
结果是:
data is id
data is checkoutStarted
data is ..
我不理解为什么它只归还“id”而不是“id = 44”。 如果我把JSON数据确定给NSDictionary,我知道钥匙是NSString,但价值是什么? 是不是国家安全局,还是什么?
This is the tutorial that I read: http://www.raywenderlich.com/5492/working-with-json-in-ios-5
Edit:从答案看,看来,NSDictionary *json是另一个NSDictionary。 我假定,这是错误的NSArray或NSString。 换言之,NSDictionary *json = [@“invoice”, NSDictionary]