我在JSON文件中遇到了一些麻烦。下面是我的控制台输出的一个缩短的版本:使用字典解析JSON数组
{
AUD = {
15m = "125.15547";
24h = "124.74";
buy = "121.0177";
last = "125.15547";
sell = "123.44883";
symbol = "$";
};
BRL = {
15m = "120.34";
24h = "120.34";
buy = "120.34";
last = "120.34";
sell = "120.34";
symbol = "R$";
};
CAD = {
15m = "129.08612";
24h = "131.07";
buy = "128.66227";
last = "129.08612";
sell = "129.08612";
symbol = "$";
};
}
我试图解析使用内置的JSON解析库中的文件。这里是解析器在我viewDidLoad
方法:
_tickerArray = [NSMutableArray array];
NSURL *tickerDataURL = [NSURL URLWithString:@"https://blockchain.info/ticker"];
NSData *jsonData = [NSData dataWithContentsOfURL:tickerDataURL];
NSError *error = nil;
NSDictionary *dataDictionary = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&error];
NSLog(@"%@", dataDictionary);
NSArray *ar = [NSArray arrayWithObject:dataDictionary];
for (NSString *key in [dataDictionary allKeys]) {
for (NSDictionary *dict in ar) {
TickerData *t;
t.currency = [dict objectForKey:key];
t.symbol = [dict objectForKey:@"symbol"];
t.last = [dict objectForKey:@"last"];
[_tickerArray addObject:t];
}
}
我想存储的货币代码(如AUD or BRL
)到t.currency
一些包含在货币字典中的其他数据,但现在我的应用程序崩溃一起。 错误代码:
NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil
的对象似乎都不被添加到_tickerArray
帮助?
编辑:获取键与适当的数据填充等领域显示:
NSDictionary *dataDictionary = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&error];
NSLog(@"%@", dataDictionary);
for (NSString *key in [dataDictionary allKeys]) {
NSDictionary *dic=[dataDictionary objectForKey:key];
TickerData *t=[[TickerData alloc] init];
t.currency = key;//EDITED
t.symbol = [dic objectForKey:@"symbol"];
t.last = [dic objectForKey:@"last"];
[_tickerArray addObject:t];
}
它似乎比我的代码更好。虽然我现在得到一个错误'__NSCFNumber objectForKey:]:无法识别的选择器发送到实例0x7184550'该实例是'dict',根据我的控制台从JSON文件中的'15m'得到它的值 – cherbear 2013-04-04 05:12:20
调试并尝试更正,我的代码虽然未经测试..但是,您的代码将无法正常工作... – iphonic 2013-04-04 05:15:16
+1!小修正:'t.currency = [dict objectForKey:key]'应该是't.currency = [dict objectForKey:@“symbol”]' – 2013-04-04 05:27:11