快速从json读取float或double

时间:2019-05-29 17:49:58

标签: json swift

我试图用swift读取json文件,它包含0.97的字段。

如果我尝试将字段强制转换为浮点型,则将返回nil,但是如果我将其强制转换为双精度型,则将返回正确的值。但是,我可以在double和float上找到的唯一区别是double是64位,而float是32位。我想知道是什么导致了差异。

2 个答案:

答案 0 :(得分:0)

一个已知的问题是,将Any转换为Float会遇到问题。参见previous discussion。只需转换为Double。

答案 1 :(得分:0)

似乎为我工作:

var jsonString = "{\n" +
    "\"float\":0.97,\n" +
    "\"double\":0.97\n" +
    "}\n"

struct Outcome: Decodable {
    let float: Float?
    let double: Double?
}
let data = jsonString.data(using: .utf8)!
let outcome = try JSONDecoder().decode(Outcome.self, from: data)
print(outcome) // Outcome(float: Optional(0.97), double: Optional(0.97))