在swift中,具有相同密钥的JsonDecoder解码数组作为不同的数据类型出现
样本响应:在swift中,具有相同密钥的JsonDecoder解码数组作为不同的数据类型出现,swift,Swift,样本响应: let responseData = try JSONDecoder().decode(MenuResponseModel, from: jsonData!) struct MenuResponseModel : Codable { let ratingAverage : Double? let ratingcount : Int? } ratingAverage==>有时会出现“Double”或“Int” 有人可以建议我,如何使用可编码方法来实现这一点吗?正如我在评
let responseData = try JSONDecoder().decode(MenuResponseModel, from: jsonData!)
struct MenuResponseModel : Codable {
let ratingAverage : Double?
let ratingcount : Int?
}
ratingAverage==>有时会出现“Double”或“Int”
有人可以建议我,如何使用可编码方法来实现这一点吗?正如我在评论中所说的那样,Double同时考虑了
Int
和浮点值
有两个主要问题:
[menuressponsemodel]
reviewCount
与结构成员ratingcount
这将正确解码JSON
[{
"ratingAverage": 3,
"reviewCount": 100,
},{
"ratingAverage": 4.2,
"reviewCount": 10,
}]
解码总是
Double
,它也接受Int
值。但是,它不接受。Double.self
会解码Int
值,可能是值是String
(用双引号括起来)?你能给我分享一些示例代码@vadianNo,你能分享一些更多的信息吗?比如这两种情况下的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)
}