gpt4 book ai didi

json - 在 Swift 4 中使用 Decodable 解析 JSON

转载 作者:行者123 更新时间:2023-12-05 00:12:42 26 4
gpt4 key购买 nike

有人能帮我解决这个问题吗,Int的长度
我正在尝试从 JSON 中获取值。执行后,我总是得到错误是:

Error serializing json: dataCorrupted(Swift.DecodingError.Context(codingPath: [CodingKeys(stringValue: "coord", intValue: nil), CodingKeys(stringValue: "lon", intValue: nil)], debugDescription: "Parsed JSON number <-77.20999999999999> does not fit in Int.", underlyingError: nil))

我的 JSON:我正在尝试获取第一个节点,即“coord”
{
"coord": {
"lon": -77.21,
"lat": 38.84
},
"weather": [
{
"id": 741,
"main": "Fog",
"description": "fog",
"icon": "50n"
},
{
"id": 701,
"main": "Mist",
"description": "mist",
"icon": "50n"
}
],
"base": "stations",
"main": {
"temp": 287.75,
"pressure": 1014,
"humidity": 77,
"temp_min": 284.15,
"temp_max": 292.15
},
"visibility": 16093,
"wind": {
"speed": 1.53,
"deg": 282.001
},
"clouds": {
"all": 1
},
"dt": 1526025120,
"sys": {
"type": 1,
"id": 3131,
"message": 0.0048,
"country": "US",
"sunrise": 1526032792,
"sunset": 1526083866
},
"id": 420039291,
"name": "Arlington",
"cod": 200
}

结构类:这个类将定义一个对象的结构
import Foundation

struct TestingClass: Decodable{
let coord: Coord
}

struct Coord: Decodable{
let lon: Int?
let lat: Int?
}

ViewController:这个类将有一个从互联网获取 JSON 的函数
override func viewDidLoad() {
super.viewDidLoad()
initialization()
}

func initialization(){

let jsonUrlString="http://api.openweathermap.org/data/2.5/weather?zip=22003,us&appid=c632597b1892b4d415c64ca0e9fca1f1"
guard let url = URL(string: jsonUrlString) else { return }

URLSession.shared.dataTask(with: url) { (data, response, err) in

guard let data = data else { return }

do {

let courses = try JSONDecoder().decode(TestingClass.self, from: data)
print(courses.coord.lat)

} catch let jsonErr {
print("Error serializing json:", jsonErr)
}
}.resume()

}

最佳答案

请仔细阅读错误信息。错误很明显

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


Int表示没有小数位的整数值。只有两种数字 JSON 类型, IntDouble .

坐标总是 Double
struct Coord: Decodable {
let lon: Double
let lat: Double
}

备注 不申报 latlong作为可选,如果坐标存在,则它始终包含两个值。

关于json - 在 Swift 4 中使用 Decodable 解析 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50289852/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com