从NSArray / NSDictionary中的空键获取值

比姆·普拉萨德·艾尔

我需要从json中取出值。我的json值是这样的:

[{"status":1,"data":[{"":558202}]}]

我已经尝试了几种方法在stackoverflow中发布。但是我仍然没有重新获得我的愿望。

我接近的最接近结果

(
558202
)

但我只需要558202。我已经尝试过

  NSArray *jsonObject = [NSJSONSerialization JSONObjectWithData:[resultStr dataUsingEncoding:NSUTF8StringEncoding]options:0 error:NULL];
  NSDictionary *tableData = [jsonObject valueForKey:@"data"];
  NSString *tempData=[tableData objectForKey:@""];

当我执行上述方法时,我得到一个错误:

-[__ NSArrayI objectForKey:]:无法识别

杰里米

键的对象data不是字典,而是一个包含一个字典的数组。

实际上,该错误消息确实告诉您。

--[__NSArrayI objectForKey:] : unrecognized
     ^^^^^^^^ is a subclass of NSArray

你真的需要

NSArray *jsonObject = [NSJSONSerialization JSONObjectWithData:[resultStr dataUsingEncoding:NSUTF8StringEncoding]options:0 error:NULL];
NSArray *tableData = [[jsonObject objectAtIndex: 0] objectForKey:@"data"];
NSString *tempData=[[tableData objectAtIndex: 0] objectForKey:@""];

注意:valueForKey:对数组起作用的原因是,对于数组,它实际上适用valueForKey:于数组中的每个元素,并返回包含所有结果的数组。

编辑

上面的代码可以写

NSString *tempData = jsonObject[0][@"data"][0][@""];

使用现代语法。但是正如rmaddy在下面说的那样,不要像这样链接东西,因为JSON集合中的元素可以是任何JSON兼容类型,因此在现实生活中,您必须检查获得的对象类型,例如

id jsonObject = [NSJSONSerialization JSONObjectWithData:[resultStr dataUsingEncoding:NSUTF8StringEncoding]options:0 error:NULL];

if ([jsonObject isKindOfClass: [NSArray class]])
{
    id firstElement = jsonObject[0];      
    if ([firstElement isKindOfClass: [NSDictionary class]])
    {
        id data = firstElement[@"data"];

    // etc
    }
}
else
{
    // errror
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用objectForKey从NSArray的NSDictionary获取NSarray

来自分类Dev

在NSArray中更新NSDictionary

来自分类Dev

在NSArray中突变NSDictionary

来自分类Dev

在NSArray中更新NSDictionary

来自分类Dev

NSArray中的NSDictionary

来自分类Dev

如何从NSDictionary获取值并将其移动到NSArray

来自分类Dev

获取NSDictionary的NSArray的值列表

来自分类Dev

从NSDictionary获取NSString作为NSArray

来自分类Dev

检查NSArray在Swift中是否包含NSDictionary键?

来自分类Dev

如何通过键:值过滤 NSArray,即在 NSDictionary 中

来自分类Dev

从NSDictionary填充NSArray

来自分类Dev

根据NSArray元素对NSDictionary键进行排序

来自分类Dev

NSArray键=>值,

来自分类Dev

iOS从NSArray获取对象

来自分类Dev

观察NSArray中NSDictionary的值变化

来自分类Dev

在Swift中对NSDictionary对象的NSArray进行排序

来自分类Dev

在NSArray中存储UIEdgeInsets

来自分类Dev

NSArray中的换行

来自分类Dev

在 tableViewCell 中显示 NSArray

来自分类Dev

计算 NSArray 中的反转

来自分类Dev

将NSDictionary转换为NSArray

来自分类Dev

NSUserDefaults返回NSDictionary而不是NSArray

来自分类Dev

将NSArray的NSArray中的objectAtIndex值求和或将NSDictionary中的键的现有值添加到现有值

来自分类Dev

将NSDictionary的NSArray转换为字典值的NSArray

来自分类Dev

iOS,键=>来自NSArray的值

来自分类Dev

给定JSON对象的NSArray,如何在NSDictionary中为同一键存储多个值?

来自分类Dev

如何创建唯一键形式对象NSArray的NSArray?

来自分类Dev

如何从NSArray iOS获取价值

来自分类Dev

NSArray从键值获取整个对象