【问题标题】:How to decode a JSON with array root in Swift如何在 Swift 中解码带有数组根的 JSON
【发布时间】:2019-10-18 01:44:27
【问题描述】:

我正在尝试解析从 api 请求中获得的一些数据。问题是,没有一个值有标签。我想为每个值添加标签,以便稍后在程序中引用标签。

struct dataSet : Codable {
    var variable1 : Int
    var variable2 : Double
    var variable3 : Double
    var variable4 : Double
    var variable5 : Double
    var variable6 : Double
    var variable7 : Double
    var variable8 : Int
}

struct firsBatch : Codable {
    var dataSet : [dataSet]
}

struct results : Codable {
    var firsBatch : firsBatch
    var last : Int
}

struct allData : Codable {
    var errors : [String]
    var results : results
}


//some api request code {...}


    do {
        let decoder = JSONDecoder()
        let parsedJSON = try decoder.decode(allData.self, from: data!)
        print(parsedJSON)
    } catch {
        print("JSON error: \(error.localizedDescription)")
    }

//数据样本

{"error":[],"results":{"firsBatch":[

[21,"93423.5","324.5","21.0","63.0","1253.0","12.34",1],[42,"314.0","431.1","2341.0","67.1 ","6567.0","0.8754",4],[12,"4312.1","12.1","43.1","3432.1","0.0","123.432",0],[422,"23442.1", "12.1","654.1","12.1","723.1","23.34521",1]

],"last":64274}}

【问题讨论】:

  • variables 应该是 UpperCamelCase。每个结构都只是变量的集合,所以它是一个完全没用的名字。

标签: json swift parsing jsondecoder


【解决方案1】:

您有一个 Variables 数组,而不仅仅是一个 Variables 实例。所以你的解码类型应该是[Variables].self,而不是Variables.self

let parsedJSON = try decoder.decode(variables.self, from: data!)

【讨论】:

  • 我尝试了您的解决方案,但出现此错误:JSON 错误:无法读取数据,因为它的格式不正确。我还更新了示例数据以显示 api 数据的页眉和页脚
  • @Liv 好吧,你不能忽略那些哈哈。所以你需要制作另一个包含error: [SomeType]results: DataSetlast: Int的结构体
  • 我更新了代码,但我仍然无法让它与这些更改一起工作。以这种格式接收数据:{error[], result { firsBatch [dataSet], last } }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-24
  • 1970-01-01
  • 2018-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-29
相关资源
最近更新 更多