【问题标题】:Json returns null in swiftJson 迅速返回 null
【发布时间】:2019-08-03 20:00:01
【问题描述】:

我正在尝试从 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?

【问题讨论】:

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

标签: json swift alamofire swifty-json


【解决方案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

记得妥善处理!

【讨论】:

    猜你喜欢
    • 2020-03-22
    • 2017-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-27
    • 2017-07-20
    • 2016-12-27
    • 1970-01-01
    相关资源
    最近更新 更多