gpt4 book ai didi

Swift Codable 在嵌套字典上崩溃

转载 作者:搜寻专家 更新时间:2023-11-01 05:32:42 27 4
gpt4 key购买 nike

我有一个复杂的 JSON 对象,看起来像这样(它被截断只是为了给出嵌套的概念:

{
"absolute_magnitude_h" = "23.4";
...
"close_approach_data" = (
{
"close_approach_date" = "1994-09-03";
"epoch_date_close_approach" = 778575600000;
"orbiting_body" = Earth;
})
"orbital_data" = {
"aphelion_distance" = "4.058036874987604";
"orbit_class" = {
"orbit_class_type" = APO;
}
}

}

我的可编码对象如下所示:

struct NEOObj:Codable {

var absoluteMagnitudeH:Float
var designation:String
var isPotentiallyHazardousAsteroid:Bool
var isSentryObject:Bool
var name:String
var nasaJPLURL:String
var neoReferenceID:String
var closeApproachData:[NEOCloseApproachData] = [NEOCloseApproachData]()
var orbitalData:NEOOrbitalData?

private enum CodingKeys: String, CodingKey {
case absoluteMagnitudeH = "absolute_magnitude_h"
case designation = "designation"
case isPotentiallyHazardousAsteroid = "is_potentially_hazardous_asteroid"
case isSentryObject = "is_sentry_object"
case name = "name"
case nasaJPLURL = "nasa_jpl_url"
case neoReferenceID = "neo_reference_id"
case closeApproachData = "close_approach_data"
case orbitalData = "orbital_data"
}

}

struct NEOCloseApproachData:Codable {

var closeApproachDate:String
var orbitingBody:String
var epochDateCloseApproach:Int

enum CodingKeys: String, CodingKey {
case orbitingBody = "orbiting_body"
case closeApproachDate = "close_approach_date"
case epochDateCloseApproach = "epoch_date_close_approach"
}
}

struct NEOOrbitalData: Codable {

var aphelionDistance:Float

enum CodingKeys: String, CodingKey {
case aphelionDistance = "aphelion_distance"
}

}

和我的代码:

do {

let thisNEOObj = try? JSONDecoder().decode(NEOObj.self, from: jsonData)
print(thisNEOObj)
} catch {

}

例如,我可以毫无问题地获取顶级键/值 (absolute_magnitude_h),并且 closeApproachData 也会被填充。但是,如果我尝试检索 orbital_data,则 thisNEOObj 变为 nil。我什至还没有尝试检索 orbit_class。 :(

我哪里错了?

最佳答案

"4.058036874987604" 是一个 String 并且不能在没有自定义解码的情况下被解码为 var aphelion Distance: Float

关于Swift Codable 在嵌套字典上崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52863857/

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