Json returns swift 中为空

Json returns null in swift

我正在尝试从 json 文件中获取值,但它 returns 为空。

代码如下:

     Alamofire.request( jsonUrl).responseJSON { (responseData) -> Void in
        if((responseData.result.value) != nil) {


            let swiftyJsonVar = JSON(responseData.result.value!)["value"]
            print(swiftyJsonVar)
            let temp = swiftyJsonVar["value"]
            print(temp)
        }
    }

这是 swiftyJsonVar 的输出:

[
  {
    "value" : "13.1",
    "quality" : "G",
    "date" : 1564772400000
  }
]

并且 temp 的输出为空。

为什么 temp 为空而不是 13.1?

这将是一个数组:responseData.result.value

该数组包含一个字典,其键名为 value

所以你应该获取数组的第一个元素,然后像这样获取 value 键的值:

JSON(responseData.result.value!)[0]["value"]

- 使用 JSON 的更好方法:

看看Codable。这是处理 json 的更好方法。

Codable你首先定义你的对象:

struct MyDTO {
    let value: String,
    let quality: String,
    let date: Int // or any type you need
}

然后你用JSONDecoder解码它:

let results = try! JSONDecoder().decode([MyDTO].self, from: responseData)

最后,您可以像这样访问您需要的项目:

results.first!.value

记得正确处理!