我在获取想要在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];
}
NSDictionary *dataDictionary = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&error];
NSLog(@"%@", dataDictionary);
//NSArray *ar = [NSArray arrayWithObject:dataDictionary];//REMOVED
for (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];
}
}
您的数据不包含任何数组,而是所有字典,请尝试上面的代码以及注释。
希望它能..
编辑:
是的,您也已初始化对象,如上面其他答案中所建议。
问题内容: 我是使用Swift语言进行iOS开发的初学者。我有一个包含以下数据的JSON文件。 我想解析此文件,并且必须返回包含JSON文件中数据的字典。这是我写的方法。 当我修改此方法以返回字典时,它总是返回nil。如何修改此方法。 问题答案: 您不能执行异步任务。您必须改用回调。 添加这样的回调: 解析器方法签名: 并在您要“返回”的数据可用的地方调用补全: 现在,您可以将此方法与结尾的闭包一
问题内容: 我如何像这样转换JSON 数组 到带有json.net或系统类的C#词典。 json.net可以直接序列化为字典, 但 前提 是您向其提供一个对象 而不是数组。 问题答案: 也许转换为KeyValuePairs数组会有所帮助
问题内容: 我在解析从javascript获取的JSON时遇到问题。JSON的格式是这样的: 到目前为止,我已经能够做到这一点: 但是我现在还需要用这些位置创建一个类。我一直在上课,因为我先尝试打印输出,但是我无法进一步细分它。我收到此错误消息: java.lang.IllegalStateException:这不是JSON数组。 我的代码是这样的: 我也尝试过这种方式: 在这种情况下,我得到:
问题内容: 我有一个带有unicode字符的json文件,但我无法解析它。我已经在Flash CS5(JSON库)中进行了尝试,并且在http://json.parser.online.fr/中进行了尝试,但我始终会收到“意外令牌- 评估失败” 抱歉,语法确实存在问题,它是通过客户端发送的。 有人可以帮帮我吗?谢谢 问题答案: RFC: JSON文本应以Unicode编码。默认编码为UTF-8。
问题内容: 我有一个在JSON中看起来像这样的数据结构: 基本上,它是一个字典数组。我宁愿使用默认的Alamofire方法,也不想手动构建请求。有没有办法给Alamofire提供我的参数,其余的Alamofire可以吗? 如果我手动创建所有内容,则会从服务器收到错误消息,提示发送数据不正确。 问题答案: 您可以执行以下操作: 哪里是和是Alamofire负责剩下的照顾。 由于您似乎正在使用经理,因
本文向大家介绍Javascript数组与字典用法分析,包括了Javascript数组与字典用法分析的使用技巧和注意事项,需要的朋友参考一下 本文实例分析了Javascript数组与字典用法。分享给大家供大家参考。具体分析如下: Javascript 的数组Array,既是一个数组,也是一个字典(Dictionary). 先举例看看数组的用法。 上面的代码创立了一个数组,每个元素都是一个字符串对象。