我有一个JSON对象,我需要从中提取浮点值。 JSON看起来像这样:
{"ticker":{"base":"NLG","target":"USD","price":"0.05896390","volume":"","change":"-0.00044477"},"timestamp":1477232372,"success":true,"error":""}
我的目标是让价格成为浮动价格。我可以检索json并在没有转换为它打印的浮点数时记录它:可选(0.05896390)。
当我把它作为一个花车时,我得到警告:
无法将
NSCFString
类型的值转换为NSNumber
let json = try JSONSerialization.jsonObject(with: data!, options:.allowFragments) as! [String: AnyObject]
let tick = json["ticker"]!["price"]! as! Float
print(tick)
答案 0 :(得分:7)
price
显然是一个字符串。在JSON对象中,双引号之间的所有内容都是字符串,即使它看起来像是一个数字。
if let tick = json["ticker"] as? [String:Any], let price = tick["price"] as? String {
print(Float(tick))
}
由于所有值均为String
,您甚至可以将字典转换为更具体的[String:String]
if let tick = json["ticker"] as? [String:String], let price = tick["price"] {
print(Float(tick))
}
注意:
[String:Any]