使用 SwiftyJSON 读取 JSON 响应的子节点

Posted

技术标签:

【中文标题】使用 SwiftyJSON 读取 JSON 响应的子节点【英文标题】:Reading child node of JSON response using SwiftyJSON 【发布时间】:2017-05-27 20:36:47 【问题描述】:

我的 JSON 响应如下所示:


data: 
   type: "collections",
   id: "dc165b3f-3600-486f-aa0b-d4719b18bb61",
   attributes: ,
   relationships: 
        shows: ,
        slides: 
        links: 
          self: "https://stage-api.cde.com/networks/online/j/collections/dc165b3f-3600-486f-aa0b-d4719b18bb61/relationships/slides",
related: "https://stage-api.cde.com/networks/online/j/collections/dc165b3f-3600-486f-aa0b-d4719b18bb61/slides"
,
      data: [
        
          type: "slides",
          id: "935d2313-4816-44a9-a65a-06a98af2d730"
        ,
        
          type: "slides",
          id: "daf02fda-b356-46df-b1d0-8c3212d826bf"
        ,
        
          type: "slides",
          id: "77bbb082-5976-450a-bb48-fda9d2a44e80"
        
   ]
,
videos: ,
collections: 
,
links: 


我需要获取data 数组下的slides 节点中存在的所有id 的值。我正在使用 SwiftyJSON 框架。

非常感谢任何帮助。如果不是 SwiftyJSON,请建议其他选项。

【问题讨论】:

【参考方案1】:

试试这个:

import SwiftyJSON

let json: JSON = ...
let data = json["data"]["relationships"]["slides"]["data"]
guard let dataArray = data.array else 
    fatalError("data array NOT FOUND")

for child in dataArray 
    guard let id = child["id"].string else 
        fatalError("id NOT FOUND")
    
    print("id: \(id)")

【讨论】:

是否可以共享代码如何使用 DispatchSemaphore(value: 0) 执行此操作,以便我可以在使用时获取函数外部的值:Alamofire.request(title, headers: headers) .validate().responseJSON 开关中的响应 response.result case .success(let value): let json = JSON(value) let data = json["data"]["relationships"]["slides"][" data"] 为 data.array 中的孩子! 让 id = child["id"].string!打印(“id:(id)”)。抱歉,我是新手。 @mizanrahman 请针对您当前的问题提出一个新问题并链接回该问题。这样你会得到更快/更好的结果;)

以上是关于使用 SwiftyJSON 读取 JSON 响应的子节点的主要内容,如果未能解决你的问题,请参考以下文章

使用 SwiftyJSON iOS 解析 JSON 响应

使用 SwiftyJSON 处理 JSON 响应

使用 SwiftyJSON 解析 JSON 响应

使用 SwiftyJSON 解析 JSON 响应而不会崩溃

如何使用 SwiftyJSON 框架读取本地声明的 JSON

将 JSON 响应保存为变量以使用 SwiftyJSON 反序列化