Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Swift 5中解析这个JSON数据?_Json_Swift - Fatal编程技术网

如何在Swift 5中解析这个JSON数据?

如何在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

我的应用程序有几个不同的视图控制器,它们从我的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”:描述“:“带灯、变压器的标题”,“条件”:”}

这是我用来建模数据的可编码结构

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由于枚举结构,我无法使其正确写入表单元格