gpt4 book ai didi

ios - 从NSArray/NSDictionary中的空键获取值

转载 作者:行者123 更新时间:2023-12-01 18:51:00 25 4
gpt4 key购买 nike

我需要从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
}

关于ios - 从NSArray/NSDictionary中的空键获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30941499/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com