iphone - 当 key 未知时获取对象?

标签 iphone objective-c ios json nsdictionary

我有一些如下所示的 json,我正在尝试将其转换为 nsdictionaries。我的问题是 1、5 和 4 是键,具有不可预测的值。在不知道 key 的情况下,我如何获取每个对象 - {"id":"A","name":"Nike"}?

// JSON looks like:
{
"shops":
{
"1":{"id":"A","name":"Nike"},
"5":{"id":"G","name":"Apple"}
"4":{"id":"I","name":"Target"}
}
}

// how to step thru this?
NSArray *shopsArray = [[shopsString JSONValue] objectForKey:@"shops"];

最佳答案

objectForKey:@"shops" 返回的对象实际上是一个 NSDictionary 实例,而不是 NSArray,因为键实际上是字符串,而不是数值。

为了您的目的,您只需对生成的 NSDictionary 调用 -allValues 即可。

NSDictionary *shops = [[shopsString JSONValue] objectForKey:@"shops"];

for(id obj in [shops allValues]) {
  //do stuff with obj...
}

编辑:如果您需要对值进行排序,则可以执行如下操作:

首先,将传入的 JSON 更改为这种结构:

{
  "shops":[
      {"key":"1", "id":"A","name":"Nike"},
      {"key":"5","id":"G","name":"Apple"},
      {"key":"4", "id":"I","name":"Target"}
  ]
}

然后,您可以对数组中的对象进行排序。

NSArray *shops = [[shopsString JSONValue] objectForKey:@"shops"];
for(NSDictionary *shop in shops) {
  NSString *key = [shop objectForKey:@"key"];
  //...
}

关于iphone - 当 key 未知时获取对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7648990/

相关文章:

iphone - 基于服务器的数据库

objective-c - CAGradientLayer径向渐变

ios - Assets 目录与文件夹引用 : When to use one or the other?

ios - Swift - 编辑 PDF QuickLook

android - React Native 文本输入更新很慢

iphone - AVAssetExportSession dealloc 在 iOS 4.3 中崩溃

iphone - 递归地将 self.view 添加到 self.view 中?

iphone - 为 UITabViewController 设置自定义设计尺寸(在 Storyboard 中)

ios - 什么是正确的日期格式(NSDateFormatter)?

ios - 如何连接到 TokBox 中的用户流