如何在Swift 5中解析这个JSON数据?
我的应用程序有几个不同的视图控制器,它们从我的web服务接收JSON数据并将其解析为表视图。这个坏了 下面是我试图解析为TableViewController的JSON数据示例 “内容4”4:{“Sku”:“W-22”,“数量”:“1”,“描述”:“面板”,“条件”:“},“内容4”5:{“Sku”:“W-15”,“数量”:“1”,“描述”:“桌面44”长,“条件”:“}”,内容4”6:{“Sku”:“W-18”,“数量”:“1”,“描述”:“末端返回面板”,“条件”:“}”,内容4”7:{“Sku”:“W-25”,“数量”:“1”,“描述”:“末端返回面板”,“条件”,“内容8”,“Sku”:“1”:描述“:“带灯、变压器的标题”,“条件”:”} 这是我用来建模数据的可编码结构如何在Swift 5中解析这个JSON数据?,json,swift,Json,Swift,我的应用程序有几个不同的视图控制器,它们从我的web服务接收JSON数据并将其解析为表视图。这个坏了 下面是我试图解析为TableViewController的JSON数据示例 “内容4”4:{“Sku”:“W-22”,“数量”:“1”,“描述”:“面板”,“条件”:“},“内容4”5:{“Sku”:“W-15”,“数量”:“1”,“描述”:“桌面44”长,“条件”:“}”,内容4”6:{“Sku”:“W-18”,“数量”:“1”,“描述”:“末端返回面板”,“条件”:“}”,内容4”7:{“S
struct Components: Codable {
var result: [Component]
}
struct Component: Codable {
var Sku: String
var Qty: String
var Desc: String
var Condition: String
}
下面是我如何将json解析为组件的
let decoder = JSONDecoder()
if let jsonUnits = try? decoder.decode(Components.self, from: data) {
UnitComponents = jsonUnits.result
DispatchQueue.main.async {
self.tableView.reloadData()
}
}
我的可重用单元格中没有显示任何内容。由于我可以看到数据,我确信我分析错误了,或者数据中的某些内容可能会破坏解析器。可能正斜杠或标题(如“content\u 4\u 4”)正在破坏解析器。不确定。欢迎提供帮助。您需要帮助吗
var unitComponents = [Component]()
do {
let jsonUnits = try JSONDecoder().decode([String:Component].self, from: data)
unitComponents = Array(jsonUnits.values)
DispatchQueue.main.async {
self.tableView.reloadData()
}
}
catch {
print(error)
}
struct Component: Codable {
let sku, qty, desc, condition: String
enum CodingKeys: String, CodingKey {
case sku = "Sku"
case qty = "Qty"
case desc = "Desc"
case condition = "Condition"
}
}
JSON数据中没有
组件数组
,因此您的模型结构与数据不匹配。在解析时不要使用try?
,捕获并打印任何错误以查看错误。查看JSON,没有键结果
,解码[字符串:组件].self
。我完全同意Gereon:解析时不要使用try?,千万不要这样做。使用CodingKeys将键映射到小写变量。如何更改结构以匹配数据?在表视图中显示数据时,我仍然存在问题。看起来所有UnitComponent都包含解析的数据,但可能是bec由于枚举结构,我无法使其正确写入表单元格