ios – 使用字典解析JSON数组

ios – 使用字典解析JSON数组,第1张

概述我在 JSON文件中找到我想要的数据时遇到了一些麻烦.这是我的控制台输出的缩短版本: { AUD = { 15m = "125.15547"; 24h = "124.74"; buy = "121.0177"; last = "125.15547"; sell = "123.44883"; 我在 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或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];    }
解决方法
NSDictionary *dataDictionary = [NSJsONSerialization JsONObjectWithData:JsonData options:0 error:&error];NSLog(@"%@",dataDictionary);//NSArray *ar = [NSArray arrayWithObject:dataDictionary];//REMOVEDfor (Nsstring *key in [dataDictionary allKeys]) {    NSDictionary *dic=[dataDictionary objectForKey:key];//ADDED    for (Nsstring *dickey in [dic allKeys]) { //MODIFIED        NSDictionary *dict=[dic objectForKey:dicKey];//ADDED        TickerData *t=[[TickerData alloc] init];//ALLOC INIT ?        t.currency = key;//EDITED        t.symbol = [dict objectForKey:@"symbol"];        t.last = [dict objectForKey:@"last"];        [_tickerArray addobject:t];    }}

您的数据不包含任何数组,其所有词典,请尝试上面的代码,请参阅注释..

希望它有效..

编辑:

是的,您也初始化了对象,如上面其他答案所示.

总结

以上是内存溢出为你收集整理的ios – 使用字典解析JSON数组全部内容,希望文章能够帮你解决ios – 使用字典解析JSON数组所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1109185.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存