我正在尝试从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?
答案 0 :(得分:2)
这将是一个数组:responseData.result.value
该数组包含一个字典,该字典的键名为value
因此,您应该采用数组的第一个元素,然后采用如下所示的value
键的值:
JSON(responseData.result.value!)[0]["value"]
看看 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
记住要以正确的方式处理!
。