Swift 4解码从JSON加倍

问题描述 投票:0回答:1

我以为我把这个概念钉了!

我发送的JSON包含一个double。

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

我已经创建了CodingKeys和解码器扩展,但是当我发送数据时仍然会出现类型不匹配错误。

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但仍然有相同的问题。

有任何想法吗?

json swift
1个回答
4
投票

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

你可以像这样解析它

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

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

© www.soinside.com 2019 - 2024. All rights reserved.