Json快速返回null

时间:2019-08-03 20:00:01

标签: json swift alamofire swifty-json

我正在尝试从json文件获取值,但它返回null。

代码如下:

     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为null而不是13.1?

1 个答案:

答案 0 :(得分:2)

这将是一个数组: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

记住要以正确的方式处理!