【问题标题】:How do I decode this JSON Data in Swift?如何在 Swift 中解码这个 JSON 数据?
【发布时间】:2020-08-22 18:22:32
【问题描述】:

如何解码这个 JSON 数据?

我使用“向下钻取”方法完成了它,在该方法中我不断调用每个键并打印值。我也尝试了数据模型,但它从未奏效。我可能做错了什么,但我不知道是什么。

提前致谢,如果您需要更多信息,尽管问,我对 Swift 和 Stackoverflow 还很陌生。

   {
       "items":[
          {
             "id":16000014,
             "name":"BO",
             "starPowers":[
                {
                   "id":23000090,
                   "name":"CIRCLING EAGLE"
                },
                {
                   "id":23000148,
                   "name":"SNARE A BEAR"
                }
             ],
             "gadgets":[
                {
                   "id":23000263,
                   "name":"SUPER TOTEM"
                },
                {
                   "id":23000289,
                   "name":"TRIPWIRE"
                }
             ]
          },
          {
             "id":16000015,
             "name":"PIPER",
             "starPowers":[
                {
                   "id":23000091,
                   "name":"AMBUSH"
                },
                {
                   "id":23000152,
                   "name":"SNAPPY SNIPING"
                }
             ],
             "gadgets":[
                {
                   "id":23000268,
                   "name":"AUTO AIMER"
                },
                {
                   "id":23000291,
                   "name":"HOMEMADE RECIPE"
                }
             ]
          }
       ],
       "paging":{
          "cursors":{
    
          }
       }
    }

【问题讨论】:

标签: ios json swift


【解决方案1】:

在 swift 中解码 JSON 非常简单。只需使用 JSONDecoder 类。首先,像这样为您的 json 响应创建一个 Codable

struct Items: Codable {
    let items: [Item]
    let paging: Paging
}

struct Item: Codable {
    let id: Int
    let name: String
    let starPowers, gadgets: [Gadget]
}

struct Gadget: Codable {
    let id: Int
    let name: String
}

struct Paging: Codable {
    let cursors: Cursors
}

struct Cursors: Codable {
}
 

然后像这样用它来解析你的JSON

 let decoder = JSONDecoder()

do {
    let items = try decoder.decode(Items.self, from: jsonData)
    print(items)
    // Do something with the items here

} catch {
    print(error.localizedDescription)
}

【讨论】:

    【解决方案2】:
    struct Name {
        var id:Int
        var name:String
    }
    
    struct Cursor {
        // Your cursor model
    }
    
    struct Paging {
        var cursors: Cursor
    }
    
    struct Items {
        var id:Int
        var name:String
        var starPowers:[Name]
        var gadgets:[Name]
    }
    
    struct MainModel {
         var items : [Items]
         var paging : Paging
    }
    

    您可以使用let yourData = try! JSONDecoder().decode(MainModel.self, from: jsonData) 对该数据进行解码,以获得所需的 JSON 数据。

    【讨论】:

      猜你喜欢
      • 2020-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-09
      • 1970-01-01
      • 2021-11-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多