【发布时间】:2020-06-10 02:03:08
【问题描述】:
我有一个 json 文件并读取它并按如下方式对其进行解码。 我的 json 文件如下所示,A 和 B 代表 struct 对象。我想知道有没有更好更有效的方法来解码这种类型的json?
[
[
{"id": "152478", "age": "20"},{"character": "king", "isDead":"no", "canMove" :"yes"}
],
[
{"id": "887541", "age": "22"},{"character": "lion", "isDead":"no", "canMove" :"yes"}
]
]
解码如下:
let url = Bundle.main.url(forResource: "mypew", withExtension: "json")!
do {
let jsonData = try Data(contentsOf: url)
// B -> json[0][0], [1][0]
// A -> json[0][1], [0][1]
response = try JSONSerialization.jsonObject(with: jsonData) as! [[[String: Any]]]
for i in 0..<response.count
{
for j in 0..<response[i].count
{
if j == 0
{
let jsonDat = (try? JSONSerialization.data(withJSONObject:response[i][j]))!
let bElement = try JSONDecoder().decode(B.self, from: jsonDat)
self.bArray.append(bElement)
}
else if j == 1
{
let jsonDatt = (try? JSONSerialization.data(withJSONObject:response[i][j]))!
let aElement = try JSONDecoder().decode(A.self, from: jsonDatt)
self.aArray.append(aElement)
}
}
}
【问题讨论】:
-
您希望最终结果是什么样的?如果我正确理解了您的代码,看起来您想要 2 个单独的数组?还是有一些结构可以容纳一对?
-
我将在自定义表格视图单元格中显示此信息。是的,每个数组项包含 2 个 json 对象。
-
你的意思是,你想要
struct Pair { let a: A; let b: B }之类的东西,以及这些东西的数组吗? -
是的,如果可能的话,我想这样。
标签: swift