json - 根据嵌套字符串的值过滤 JSON

标签 json swift filter

使用如下JSON对象,是否可以只过滤IOS相关内容?我对任何方法都持开放态度,即 for-in 循环或 .filter?

例如,我想进行过滤,以便仅当平台 key 与“IOS”匹配时才返回内容,在这种情况下,我会得到:

  • 标题 1
  • 问题 1b
  • IOS

困难在于只有在平台匹配成功时才应打印标题,而且我看不到使用常规嵌套 for in 循环实现此目的的方法。

[
  {
    "title": "Title 1",
    "faqs": [
      {
        "question": "question 1a",
        "platform": "ANDROID"
      },
      {
        "question": "question 1b",
        "platform": "IOS"
      }
    ]
  },
  {
    "title": "Title 2",
    "faqs": [
      {
        "question": "question 2a",
        "platform": "ANDROID"
      },
      {
        "question": "question 2b",
        "platform": "WEB"
      }
    ]
  }
]

最佳答案

简单(Swift 3)解决方案,data 是作为 Data 的 JSON 字符串:

  do {
    if let jsonObject = try JSONSerialization.jsonObject(with:data, options: []) as? [[String:Any]] {
      for item in jsonObject {
        if let title = item["title"] as? String,
           let faqs = item["faqs"] as? [[String:String]],
           let iOSFaqs = faqs.filter({$0["platform"] == "IOS"}).first {
             print(title)
             print(iOSFaqs)
        }
      }
    }
  } catch let error as NSError {
    print(error)
  }

关于json - 根据嵌套字符串的值过滤 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39722342/

相关文章:

.net - appsettings.json 文件中的 JSON 变量替换在 Azure DevOps 版本中不起作用

具有分层输出的 Javascript JSON 横向

Xcode 7 arc4random 丢失了吗?

ios - 在一个 UICollectionView 中实现两个 CollectionView 布局

json - 使用 XHR 请求将 Discord 嵌入发送到 Webhook

ios - 如何通过 Alamofire 发送空 JSON?

ios - 0 超出空 NSArray 的界限

javascript - 防止数组过滤器匹配与所需元素没有相同索引的元素

c# - 在 WPF 中筛选 DataGrid

excel - 运行过滤器后自动运行 VBA 代码