动态key
优点:数据结构可读性高,运行速度也快。
缺点:前端解析不方便。
{
"rows": [
["Off", {
"type": "i32_",
"i32_": -1
}],
["test1", {
"type": "i32_",
"i32_": 0
}],
["test2", {
"type": "i32_",
"i32_": 1
}],
["test3", {
"type": "i32_",
"i32_": 2
}],
["test4", {
"type": "i32_",
"i32_": 3
}]
],
"rowsCount": 5,
"rowsVersion": 0,
"roles": {}
}
JSONDecoder
nestedUnkeyedContainer
: 存储没秘钥的容器
unkeyedContainer
: 存储非键值的编码容器
isAtEnd
: 容器中是否还剩余需要解码的元素
Swift
// A类核心代码
var unkeyedContainer = try container.nestedUnkeyedContainer(forKey: .rows)
// 遍历所有元素
while !unkeyedContainer.isAtEnd {
if let row = try? unkeyedContainer.decode(B.self) {
self.rows.append(row)
}
}
// B类核心代码
var container = try decoder.unkeyedContainer()
while !container.isAtEnd {
// 获取动态 key值
self.name = try container.decode(String.self)
self.value = try container.decode(ActiveFilterResponse.self)
}
网友评论