gpt4 book ai didi

Swift 4 中的 JSON 解码

转载 作者:行者123 更新时间:2023-11-30 11:42:50 25 4
gpt4 key购买 nike

我正在尝试将以下 JSON 从 Met Office 转换为 Swift 4 中的对象,但遇到错误。我的计划是在 JSON 解码后存储在 Core Data 中。以下是返回的一些 JSON

let json = """
{
"Locations":
{
"Location":
[
{
"elevation": "50.0",
"id": "14",
"latitude": "54.9375",
"longitude": "-2.8092",
"name": "Carlisle Airport",
"region": "nw",
"unitaryAuthArea": "Cumbria"
},
{
"elevation": "22.0",
"id": "26",
"latitude": "53.3336",
"longitude": "-2.85",
"name": "Liverpool John Lennon Airport",
"region": "nw",
"unitaryAuthArea": "Merseyside"
}
]
}
}
""".data(using: .utf8)!

我创建了一个结构,用于将数据转换为:

struct locations: Decodable {
var Locations: [location]
struct location: Decodable {
var Location: [MetOfficeLocation]
struct MetOfficeLocation: Decodable {
var elevation: String
var id: String
var latitude: String
var longitude: String
var obsSource: String?
var name: String
var region: String
var area: String

private enum CodingKeys: String, CodingKey {
case elevation
case id
case latitude
case longitude
case obsSource
case name
case region
case area = "unitaryAuthArea"
}
}
}
}

然后我使用 JSONDecoder 进行转换:

let place = try JSONDecoder().decode([Location].self, from: json)
for i in place {
print(i.Location[0].name)
}

我收到 keyNotFound 错误,提示没有与关键位置(\“位置\”)关联的值。”我很困惑,因为我不确定应该与位置关联什么值,因为它只是位置

谢谢

最佳答案

有很多方法可以做到这一点。但最简单的可能是创建结构来表示 JSON 的每个级别:

struct Location: Codable {
let elevation: String
let id: String
let latitude: String
let longitude: String
let name: String
let region: String
let area: String
private enum CodingKeys: String, CodingKey {
case elevation, id, latitude, longitude, name, region
case area = "unitaryAuthArea"
}
}

struct Locations: Codable {
let locations: [Location]
enum CodingKeys: String, CodingKey {
case locations = "Location"
}
}

struct ResponseObject: Codable {
let locations: Locations
enum CodingKeys: String, CodingKey {
case locations = "Locations"
}
}

do {
let responseObject = try JSONDecoder().decode(ResponseObject.self, from: data)
print(responseObject.locations.locations)
} catch {
print(error)
}

关于Swift 4 中的 JSON 解码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49158117/

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