Swift 4解码从JSON翻倍

时间:2018-08-31 15:51:42

标签: json swift

尽管我牢牢抓住了这个概念!

我正在发送一个包含double的JSON。

{"elementName":"Security:Driver","element_Cost":"650"}

我已经创建了CodingKeys和一个解码器扩展,但是在发送数据时仍然出现Type Mismatch错误。

struct ElementCosts: Content {
    let elementName: String
    let elementCost: Double

    enum CodingKeys: String, CodingKey {

        case elementCost = "element_Cost"
        case elementName
    }
}

extension ElementCosts: Decodable {

    public init(from decoder: Decoder) throws {
        let values = try decoder.container(keyedBy: CodingKeys.self)
        elementCost = try values.decode(Double.self, forKey: .elementCost)
        elementName = try values.decode(String.self, forKey: .elementName)
    }
}

在这里查看其他一些帖子,我看不到我做错了什么。

我试图将数据类型更改为Int,但仍然存在相同的问题。

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

"650"是一个字符串,而不是数字。

您可以这样解析

let elementCostString = try values.decode(String.self, forKey: .elementCost)
elementConst = Double(elementCostString) ?? 0

或将其更改为模型上的字符串,以对您更适合的为准。