json - 我如何在这个 JSON 之后创建一个 Struct 模型?
问题描述
这是我的 JSON:
这是我创建的模型,但它未能解码:
struct Response: Decodable {
let results: [Order]
}
struct Order: Decodable {
let charge_id: String
let createdAt: String
let items_bought : [BoughtItems]
let objectId: String
let soldBy: String
let total: String
let status: String
}
struct BoughtItems: Decodable {
let price: Int
let productTitle: String
let quantity: Int
let variantId: Int
let variantTitle: String
}
解决方案
请抓住错误并处理它。Codable
错误非常具有描述性。
类型“Int”不匹配:应解码 Int,但找到了字符串/数据。
codingPath: [CodingKeys(stringValue: "results", intValue: nil), _JSONKey(stringValue: "Index 0", intValue: 0), CodingKeys(stringValue: "items_bought", intValue: nil), _JSONKey(stringValue: "Index 0 ", intValue: 0), CodingKeys(stringValue: "price", intValue: nil)]
清楚地说price
in BoughtItems
isString
而不是Int
.
替换let price: Int
为let price: String
你后会得到另一个错误
类型“字符串”不匹配:应解码字符串,但找到了一个数字。
codingPath: [CodingKeys(stringValue: "results", intValue: nil), _JSONKey(stringValue: "Index 0", intValue: 0), CodingKeys(stringValue: "total", intValue: nil)]
这也很清楚。的类型total
是Double
,不是String
使固定:let total: Double
请学习阅读JSON。这很简单:
- 双引号中的所有内容(也不例外)是
String
- 浮点数值是
Double
- 其他数值为
Int
。 true
或false
(没有双引号)是Bool
推荐阅读
- java - 使用 Autowired 创建对象实例
- java - 拍照并将其保存到图库而不是应用程序文件
- java - 我想用几何和弹簧靴找到距离较近的汽车
- javascript - 无法分配给 React.js 中的只读属性
- click - 使用 Power Automate Desktop 在网站中单击动态按钮
- javascript - 如何按顺序排列数组对象
- python - 当我相信脚本正确完成时,为什么没有创建表,而且外键定义有什么问题?谢谢
- javascript - 如何在 javascript 中呈现部分 .js.erb 文件
- python-3.x - 比较原始文件和截断文件的哈希 - Python
- directory - 使用python更改文件夹权限