[英]How to decode dynamic nested JSON in Swift
我一直在嘗試從后端系統解碼 JSON。
{
"Inst1": [
{
"symbol": "Inst1",
"id": 357200929,
"ltd": 20191220
},
{
"symbol": " Inst1",
"id": 357200932,
"ltd": 20191220
},
{…}
],
"Inst2": [
{
"symbol": "Inst2",
"id": 357201388,
"ltd": 20191220
},
{
"symbol": "Inst2",
"id": 371886725,
"ltd": 20200320
}
]
}
頂級節點(Inst1、Inst2)的名稱和數量是可變的且未知的。 我相信這些節點的正確名稱是“Dynamic Coding Keys”,這就是不能使用枚舉的原因。
子節點在一個數組中,並且總是共享相同的結構。 它們的數量是未知的,並且對於每個頂級節點可能不同(例如,inst1 可能有 10 個子節點,但 Inst2 可以有 5 個)。
我正在努力尋找解碼/編碼此類回復的正確方法。 任何幫助將不勝感激。 謝謝
按照 Sh_Khan 的回答,我嘗試了下面的代碼,但它不起作用。
var json = """
{
"Inst1": [
{
"symbol": "Inst1",
"id": 357200929,
"ltd": 20191220
},
{
"symbol": " Inst1",
"id": 357200932,
"ltd": 20191220
}
],
"Inst2": [
{
"symbol": "Inst2",
"id": 357201388,
"ltd": 20191220
},
{
"symbol": "Inst2",
"id": 371886725,
"ltd": 20200320
}
]
}
""".data(using: .utf8)!
struct Inst: Codable {
let symbol: String
let id, ltd: Int
}
let result = try? JSONDecoder().decode([String:[Inst]].self,from: json)
你需要
let res = try? JSONDecoder().decode([String:[Inst]],from:data)
struct Inst: Codable {
let symbol: String
let id, ltd: Int
}
正確 json
var json = """
{
"Inst1": [
{
"symbol": "Inst1",
"id": 357200929,
"ltd": 20191220
},
{
"symbol": " Inst1",
"id": 357200932,
"ltd": 20191220
}
],
"Inst2": [
{
"symbol": "Inst2",
"id": 357201388,
"ltd": 20191220
},
{
"symbol": "Inst2",
"id": 371886725,
"ltd": 20200320
}
]
}
""".data(using: .utf8)!
Sh_Khan 提供的解決方案有效。
let res = try? JSONDecoder().decode([String:[Inst]],from:data)
struct Inst: Codable {
let symbol: String
let id, ltd: Int
}
感謝您的輸入。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.