将 json 文件导入对象错误



我有这个json文件: http://serwer1356363.home.pl/pub/json.txt

和这个代码:

var ProductsObjectArray = [Products]()
let data = try Data(contentsOf: path)
let decoder = JSONDecoder()
let ProductsObjectArray = try decoder.decode(Products.self, from: data)

和型号:

struct ProductObject : Codable {
let palletHeight : Double?
let layerPallet : Int?
let prepCombisteamer : String?
let id : Int?
let prepOven : String?
}

当我启动此代码时,出现错误:

Swift.DecodingError.typeMismatch(Swift.Dictionary, Swift.DecodingError.Context(codingPath: [], debugDescription: "期望解码字典,但找到一个数组 相反。

我想将 json 写入产品对象数组对象数组。 有人怎么能修理它?

假设ProductObject按预期实现,并且您正在适当地从文件中读取数据:

如错误中所述:

"本应解码字典,但找到了一个数组。">

json文件包含一个ProductObject数组,似乎你的代码中有一个Products不应该用于解码器,可能你应该这样解码:

let ProductsObjectArray = try decoder.decode([ProductObject].self, from: data)

这意味着ProductsObjectArray将是一组ProductObject。与字典无关。


旁栏提示:在命名变量时,您应该遵循小骆驼大小写约定,而不是大骆驼大小写约定:

ProductsObjectArrayproductsObjectArray

ProductsObjectArrayproductsObjectArray

问题是您尝试在 JSON 是Array时解析Dictionary模型

改变

let ProductsObjectArray = try decoder.decode(Products.self, from: data)

let ProductsObjectArray = try decoder.decode([Products].self, from: data)

JSON 在顶层包含一个产品列表,因此您需要解码产品数组而不是单个字典。

尝试更换

let ProductsObjectArray = try decoder.decode(Products.self, from: data)

let ProductsObjectArray = try decoder.decode([Products].self, from: data)

相关内容

  • 没有找到相关文章

最新更新