SwiftyJSON,不能将json变成双精度

时间:2018-05-04 23:02:44

标签: json swift

我正在尝试构建一个加密货币应用程序,通过API告诉您Cardano的价格。在' If Statement'在它下面直接去'否则'但是,如果我改变了“.double' to' .string'它工作正常。我无法弄清楚原因。我使用的是SwiftyJSON,Alamofire,Swift4和Xcode 9

以下是API: https://api.cryptonator.com/api/ticker/ada-aud它应该带回价格,例如0.47756685

func updateCardanoData(json : JSON) {
    if let cardanoResult = json["ticker","price"].double {
        cardanoPriceLabel.text = currencySelected + "\(cardanoResult)"
    } else  {
        cardanoPriceLabel.text = "price unavailable"
    }
}

谢谢。

2 个答案:

答案 0 :(得分:1)

这是因为您的API实际上并不返回double,而是返回字符串。

"price":"0.48121602" - this is a string, notice the double quotes

解决方案是将收到的字符串转换为Double,如下所示:

if let cardanoResult = json["ticker","price"].string, let doubleResult = Double(cardanoResult) {
        //do stuff with doubleResult
}

答案 1 :(得分:0)

因为我不知道JSON的结构,我只能说,如何打印错误。我不知道,如果这对你有帮助的话。作为SwiftyJSON状态的文档,您可以使用error来获取错误,例如:

if let cardanoResult = json["ticker","price"].double {
    //do something with the Double value
} else  {
    print(json["ticker","price"].error)
}

我希望,这对您有所帮助,否则,请向我们展示JSON的结构。