swift - 具有相同键的 JsonDecoder 解码数组在 swift 中以不同的数据类型出现
问题描述
let responseData = try JSONDecoder().decode(MenuResponseModel, from: jsonData!)
struct MenuResponseModel : Codable {
let ratingAverage : Double?
let ratingcount : Int?
}
示例响应:
[{
"ratingAverage": 3,
"reviewCount": 100,
},{
"ratingAverage": 4.2,
"reviewCount": 10,
}]
ratingAverage ==> 有时它会以“Double”或“Int”的形式出现
有人可以建议我,我怎样才能通过使用 Codable 方法来做到这一点?
解决方案
正如我在评论中所说,Double
考虑了Int
浮点值和浮点值。
有两个主要问题:
- 你必须解码一个数组
[MenuResponseModel]
- 键
reviewCount
与结构成员不匹配ratingcount
这会正确解码 JSON
let jsonString = """
[{"ratingAverage": 3,"reviewCount": 100},
{"ratingAverage": 4.2,"reviewCount": 10}
]
"""
struct MenuResponseModel : Codable {
let ratingAverage : Double
let reviewCount : Int
}
let data = Data(jsonString.utf8)
do {
let result = try JSONDecoder().decode([MenuResponseModel].self, from: data)
print(result)
} catch {
print(error)
}
推荐阅读
- c# - WPF 根据绑定值更改数据网格行的 PackIcon
- c# - C# 从流中调整图像大小
- java - 如何查找一个单词在文本文件的哪一行,如果该单词存在于多行中,则保存行号?
- asp.net-core - 如何将culture和uiculture设置为特定的CultureInfo
- twilio - Twilio 重新启动 VoiceResponse 的问题
- reverse-engineering - 如何将radare2用于PIC32 MX534F064H
- css - 如何让内表忽略继承的样式
- python - 如何将函数的参数变成字符串
- sprite-kit - SpriteKit 不使用 SKAudioNode 或 SKAction.playSoundFileNamed 播放任何音乐
- google-app-engine - gcloud cli 应用引擎域映射错误