【问题标题】:Get NSCFDictionary sub key values获取 NSCFDictionary 子键值
【发布时间】:2016-01-11 05:17:48
【问题描述】:

我正在解析 JSON 数据,我得到一个类似的 JSON 树

2015-10-13 15:29:10.563 JsonProject[29154:1434114] 请求回复:( { DNumb = 512421421; DTempData = ""; DUUID = 12; ID = 1; }, { DTempData = ""; ID = 2; },

正如你在这里看到的sub key values,我在NSCFDictionary 数据下得到了值,但我不知道如何解析它们。我是 Objective-c 的新手,来自 .net,有没有办法解析这些值?

【问题讨论】:

  • 请不要在外部链接中发布对获得答案至关重要的信息。

标签: objective-c json serialization jsonserializer


【解决方案1】:

首先您需要将您的 JSON 数据转换为 NSArray

NSError *jsonError;
NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&jsonError];

然后您可以使用它的键访问每个值,如下所示:

NSDictionary *jsonItemDic = jsonArray[0];
NSString *dTempData = [jsonItemDic objectForkey@"DTempData"]; 

P.S.:您发送的示例数据不完整,您的 JSON 似乎是一个字典数组。我的答案依赖于这个理论。

更新:

从我看到的屏幕截图中,您的数据存储在根字典中。这意味着您的对象的根是一个字典,其中包含一个名为 GetVerifiedDevices 的键和一个字典数组的值。您可以像这样访问设备数组:

NSArray *devices = [your_json_object objectForKey:@"GetVerifiedDevices"];

然后像这样查询您的设备:

for(NSDictionary *deviceDic in devices){
  NSString *dTempData = [deviceDic objectForkey@"DTempData"]; 
//And others like above
}

干杯。 M.

【讨论】:

  • 获取数组但之后我得到类似s22.postimg.org/xb86u0j7l/…的东西,我该如何解析键值?
  • 在这个数据下是:s16.postimg.org/5q1rjuj85/…
  • 好的,我看到了你的对象,它是一个字典数组。你看,NSCFDictionary 只不过是实际的NSDictionary(CF 代表 CoreFoundation),你所要做的就是找到你想要的字典并获得你想要的值。我要编辑我的答案。
【解决方案2】:

以下是您的回应;

equestReply: ( 
    { 
      DNumb = 512421421; DTempData = ""; DUUID = 12; Id = 1;
     },
     { DTempData = ""; Id = 2; 
    })

所以你可以得到如下值;

NSMutableArray* dict = [yourResponseObject  ObjectForKey:"equestReply"];
NSString* = [[dict objectAtIndex:index] valueForKey:"DNumb"];
NSString* = [[dict objectAtIndex:index] valueForKey:"DTempData"];
NSString* = [[dict objectAtIndex:index] valueForKey:"DUUID"];

【讨论】:

  • No visible @interface for 'NSMutableArray' 声明选择器 'objectAtIndex:valueForKey:' 这是什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-13
  • 1970-01-01
  • 1970-01-01
  • 2018-04-16
  • 1970-01-01
  • 2019-12-20
  • 2020-05-18
相关资源
最近更新 更多