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
记得正确处理!
。
我正在尝试从 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
记得正确处理!
。