NSDictionary - 从返回的 JSON 服务中解析项目

Posted

技术标签:

【中文标题】NSDictionary - 从返回的 JSON 服务中解析项目【英文标题】:NSDictionary - Parsing item out of a return JSON service 【发布时间】:2015-05-12 02:05:11 【问题描述】:

我正在尝试使用做一些疯狂事情的​​网络服务。部分服务正在返回一个类似于此屏幕截图的值。

下面是我的代码,只是试图遍历一个 NSDictionary。

NSDictionary *platesJson = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];

 for(id key in platesJson) 
        id myvalue = [platesJson objectForKey:key];
        NSString *myValue = [[platesJson objectForKey:key] objectForKey:@"value"];
    

我尝试循环遍历数组字典并提取信息,但它似乎总是返回 nil 或完全崩溃。具有讽刺意味的是,值为 0 的屏幕截图是此 Web 服务的错​​误,我试图在周围放置一个 if 条件。

我也尝试了以下结果,结果也为零;

for (int i = 0; i< platesJson; i++)
    
     NSString *myValue = [[platesJson objectAtIndex:i] objectForKey:@"value"];
    

if(myValue == 0)
//Alert the user no data found

else
//Continue on....

我确信它非常简单,只是坚持使用正确语法处理它的最佳方法。

【问题讨论】:

请将 NSString 改成 NSArray 或 NSMutableArray 然后试试看。 【参考方案1】:
NSDictionary *platesJson = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];

 for(id key in platesJson) 
        id myvalue = [platesJson objectForKey:key];
        NSString *myValue = [platesJson objectForKey:key];
    

我想这会奏效,

[platesJson objectForKey:key]将获得价值。如果该值是字典,则需要再次循环。但是在您发布的图像中,它只是一个简单的字典

【讨论】:

谢谢。是的,这种方式确实适用于 id/key。我遇到的问题是密钥是动态的(意味着值可以是 0、1、2、3 等。但是你说代码可以工作是正确的。但是我需要重新考虑逻辑。谢谢快速回复!【参考方案2】:

如果你真的确定键的值是NSDictionary,你会得到这样的:

NSDictionary *myValue = JSON[ key ];

您可以从myValue 获得完全相同的值:

NSString *someString = myValue[ @"KLSL" ];

注意 JSON 中的第一个元素是 NSArray 或 NSDictionary。

希望对你有帮助。

【讨论】:

感谢 Jan,该值是动态的,因此代码的 KLSL 部分将始终更改。我正在使用的网络服务做了一些奇怪的事情,我试图改变目标 c。显然我需要重新考虑这一点。感谢您的快速重播!

以上是关于NSDictionary - 从返回的 JSON 服务中解析项目的主要内容,如果未能解决你的问题,请参考以下文章

如何从 NSDictionary 将 json 显示到 uitextview

NSDictionary objectForKey 返回值

将 JSON 数据从 NSData 转换为 NSDictionary

如何从 NSDictionary 获取整数值?

在 NSDictionary 上使用地图

具有 nil 值的 NSDictionary 快速 KVC