gpt4 book ai didi

ios - 将 JSON 提取到 NSArray 中以进行动态导航

转载 作者:行者123 更新时间:2023-11-29 10:40:29 24 4
gpt4 key购买 nike

假设我有一个这样的 JSON 对象:

{"data":[{"stuff":[
{"onetype":[
{"id":1,"name":"John Doe"},
{"id":2,"name":"Don Joeh"}
]},
{"othertype":[
{"id":2,"company":"ACME"}
]}]
},{"otherstuff":[
{"thing":
[[1,42],[2,2]]
}]
}]}

我怎样才能读取它以便我可以像这样访问它:

result.data[0].stuff[0].onetype[0]

我尝试了以下方法:

NSData *rawJSONdata = [NSData dataWithContentsOfURL:someURL];
NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData:rawJSONdata options:0 error:&error];

但这让我得到了一个只有 1 个空对象的 NSArray

最佳答案

为了保持简单并继续使用 NSJSONSerialization,您应该能够使用以下语法访问数据:

result[@"data"][0][@"stuff"][0][@"onetype"][0]

我猜你看到的问题与以下事实有关,因为你的 JSON 的最外层类型是对象而不是数组,所以你的示例中的结果是 NSDictionary,而不是 NSArray。您需要将解析代码更改为:

NSDictionary *result = [NSJSONSerialization JSONObjectWithData:rawJSONdata options:0 error:&error];

为了使用您建议的确切语法:

据我所知,最好的方法是使用 JSON 到对象的映射框架。我找不到针对 Objective-C 的全自动解决方案(Java 有一个名为 Jackson 的解决方案),但是 JTObjectMapping是一个 Objective-C 框架,提供将 NSDictionary 转换为对象的手动能力。

但是,NSJSONSerialization 将始终使用以下映射:

  • 数组(又名 [ ])<=> NSArray
  • 对象(又名 { })<=> NSDictionary
  • 编号<=> NSNumber
  • 字符串 <=> NSString
  • true/false <=> NSNumber
  • null <=> NSNull

关于ios - 将 JSON 提取到 NSArray 中以进行动态导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24792964/

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