You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift 4中使用Decodable解析JSON时Int类型适配问题求助

问题解决:Swift Decodable解析JSON时的类型不匹配错误

嘿,这个问题的原因其实从错误提示里就能直接看出来啦!

错误根源

错误信息里明确指出:

Parsed JSON number <-77.20999999999999> does not fit in Int.

你的JSON数据中,coord节点下的lon和lat是浮点数类型(比如-77.21、38.84),但你在Coord结构体里却把这两个字段定义成了Int?(可选整数类型)——JSON解码器没办法把一个小数塞进整数变量里,所以就抛出了数据损坏的错误。

解决方案

只需要把Coord结构体里的lon和lat类型改成对应的浮点数类型即可,推荐用Double?(日常开发中精度足够),用Float?也可以。

修改后的结构体代码:

import Foundation

struct TestingClass: Decodable{
    let coord: Coord
}

struct Coord: Decodable{
    // 将Int?替换为Double?
    let lon: Double?
    let lat: Double?
}

额外说明

如果后续你需要把这些浮点数转换成整数,可以在解析完成后手动处理,比如:

if let lat = courses.coord.lat {
    let integerLat = Int(lat)
    print(integerLat) // 输出38
}

这样修改之后,你的解析代码就能正常运行,成功获取到coord节点的数据啦!

内容的提问来源于stack exchange,提问作者Benjamin So

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:15:49