首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >iOS JSON解码数字类型错误

iOS JSON解码数字类型错误
EN

Stack Overflow用户
提问于 2018-06-05 09:04:33
回答 1查看 609关注 0票数 -1

我在从API的JSON响应中解码银行信息时遇到问题。

下面是我的数据结构的相关部分。我创建了TransactionResponse对象,以简化从响应中提取相关数据的过程:

struct Transaction: Decodable {
    ... // other properties, not relevant to this
    let isFutureDated: Float?   /\
    ... // see above ___________/
}

struct TransactionResponse: Decodable {
    let response: Response?

    struct Response: Decodable {
        ...
        let transactions: [Transaction]?
    }
}

以及我从JSON数据对象进行的转换:

do {
    let transactions = try JSONDecoder().decode(TransactionResponse.self, from: data)
} catch let localError {
    print(localError)
}

如果我注释掉isFutureDated属性,对象就可以正常加载(还有大约12个其他属性,所以不仅仅是因为它成功加载了任何东西:P)。当我在数据结构中包含isFutureDated属性时,我捕获到以下错误:

typeMismatch(Swift.String,Swift.DecodingError.Context(codingPath: CodingKeys(stringValue:"response",intValue: nil),CodingKeys(stringValue:"transactions",intValue: nil),_JSONKey(stringValue:"Index 0",intValue: 0),CodingKeys(stringValue:"isFutureDated",intValue: nil),debugDescription:“期望解码浮点数,但发现了一个数字。”,:nil))

我是不是遗漏了什么?浮点数不是数字吗?我还尝试将isFutureDated的类型更改为Double、Int、Int8、Int16、Int32、Int64、UInt、UInt8……你明白了吧。甚至是数据和字符串。总是同样的错误,将Float部件换出它所期望的任何类型。

最后注意,来自响应对象的实际JSON字段如下:

isFutureDated = 0;

这不是我将在这个特定的应用程序中使用的字段,但如果这个问题再次发生,我希望在它生效之前找到一个解决方案。

EN

回答 1

Stack Overflow用户

发布于 2018-06-05 09:12:25

哦,不要紧。isFutureDated应该是一个布尔值,而不是任何类型的数字。也就是说,

let isFutureDated: Bool?

真奇怪。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50690666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档