如何在 Swift 中解码这个 JSON 数据?
Posted
技术标签:
【中文标题】如何在 Swift 中解码这个 JSON 数据?【英文标题】:How do I decode this JSON Data in Swift? 【发布时间】:2020-08-22 18:22:32 【问题描述】:如何解码这个 JSON 数据?
我使用“向下钻取”方法完成了它,在该方法中我不断调用每个键并打印值。我也尝试了数据模型,但它从未奏效。我可能做错了什么,但我不知道是什么。
提前致谢,如果您需要更多信息,尽管问,我对 Swift 和 *** 还很陌生。
"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":
【问题讨论】:
这应该会有所帮助:avanderlee.com/swift/json-parsing-decoding 还有文档:developer.apple.com/documentation/foundation/jsondecoder 【参考方案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 数据。
【讨论】:
以上是关于如何在 Swift 中解码这个 JSON 数据?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Swift 中使用动态键(在根级别)解码此 JSON?
当您不知道 Swift 中的项目类型时,如何解码嵌套的 JSON 数据? [复制]