json - 反序列化双数组
问题描述
我尝试使用 Codable Protocol 在 Swift 4.2 上反序列化一些 JSON。我的杰森
{
"status":1,
"data":[
[
{
"id":"4klJeiCKTs",
"body":"first",
"da":"1442236233",
"dm":"1442236233"
},
{
...
}
]
]
}
我的结构和代码:
struct GetEntriesRequest: Decodable{
var status: Int
var data: [NestedArrayGetEntries]
}
struct NestedArrayGetEntries: Decodable{
var elements: [GetEntriesDataFromSession]
}
struct GetEntriesDataFromSession: Decodable{
var id: String
var body: String
var da: String
var dm: String
}
...
let decoder = JSONDecoder()
decoder.keyDecodingStrategy = .convertFromSnakeCase
do {
let root = try decoder.decode(GetEntriesRequest.self, from: data)
dataSession = root
} catch { print(error) }
另外,我尝试了这个结构
var data: [[GetEntriesDataFromSession]]
但没有任何成功。感谢先进
解决方案
data
key 是一个嵌套数组并且没有elements
key
var data: [NestedArrayGetEntries]
和
var data: [[NestedArrayGetEntries]]
struct GetEntriesRequest: Codable {
let status: Int
let data: [[NestedArrayGetEntries]]
}
struct NestedArrayGetEntries: Codable {
let id, body, da, dm: String
}
您在这里也不需要蛇盒
do {
let root = try JSONDecoder().decode(GetEntriesRequest.self, from: data)
dataSession = root
} catch {
print(error)
}
推荐阅读
- android - Glide 没有将“joeschmoe”头像加载到 ImageView 中
- git - Git 有一些很重的文件,我想清理一下
- python - 如何使用 python selenium 点击第一个谷歌搜索结果?
- java - gson : 将空字符串视为 null
- javascript - JS函数设置addEventListeners太多
- swift - 如何在 swift mac 应用程序中订阅全局触控板触摸事件?
- python - python中的变量扩展可以像变量的shell扩展一样工作吗
- django - 带有多个外键表单的页面
- excel - 我做了一个子函数但得到一个错误,怎么了?
- asp.net - 选中复选框时,ASP.Net onclick 未触发