将JSON对象导入NSArray
问题描述:
尝试解析Objective-C中的此JSON对象并使用这些对象创建NSArray。 第一个值是一个计数器,并且对于该对象是特定的。所有其他值都是唯一的。将JSON对象导入NSArray
{ "myData": [
["1","1","110","dollar","8.0","2.8","0.1","11.6"],
["2","1","110","euro","4.0","3.2","1.5","4.4"],
["3","1","120","rupier","6.0","2.9","1.3","10.8"],
["4","1","120","dinero","4.0","3.3","1.5","4.4"],
["5","2","130","drahmer","8.0","2.9","1.3","11.2"],
] }
尝试这种代码:
NSDictionary* json = [NSJSONSerialization
JSONObjectWithData:myData
options:kNilOptions
error:&error];
NSArray *currencyInformation = [json objectForKey:@"myData"];
但对象不存在。虽然阵列的数量为5
答
在这个数据结构则需要通过指数如
for (NSArray *currency in currencyInformation) {
NSLog(@"Currency: %@", [currency objectAtIndex:3]);
}
访问的事情,如果你想通过密钥来访问的事情,那么你就需要你的JSON改变使用一组对象而不是一组数组。事情是这样的:
{
"myData": [
{
"primaryKey" : 1,
"currency" : "dollar",
<other keys + values>...
},
]
}
在这种情况下,你现在可以这样做:
for (NSDictionary *currency in currencyInformation) {
NSLog(@"Currency: %@", [currency valueForKey:@"currency"]);
}
答
数组中的每个对象本身就是一个数组,所以:
NSDictionary* json = [NSJSONSerialization
JSONObjectWithData:myData
options:kNilOptions
error:&error];
NSArray *currencyInformation = [json objectForKey:@"myData"];
for (NSArray *info in currencyInformation) {
// Then access each "column" with [info objectAtIndex:0,1,2,3,...]
}
如果[数组数]如预期的那样5,对象*在那里。你怎么知道他们不是? – 2012-03-18 20:59:02
无法从阵列中读取它们。由于他们没有任何关于价值的描述,即。 “货币”:“美元”我无法将它们准备好...... – linge 2012-03-18 21:04:55
'货币'在哪里?我根本没有在JSON中看到。向我们展示如何访问数组中的值。 (提示:他们自己会是NSArray的)。 – mattjgalloway 2012-03-18 21:20:55