在swift 2.3中解析Json时出错

在swift 2.3中解析Json时出错,swift,swift2,Swift,Swift2,我正在尝试解析这本词典 {"fare":{"value":99.03,"fare_id":"12313545861568689494880005558558852","expires_at":1485864494,"display":"\u20b999.03","currency_code":"INR"},"trip":{"distance_unit":"mile","duration_estimate":720,"distance_estimate":2.76},"pickup_estimat

我正在尝试解析这本词典

{"fare":{"value":99.03,"fare_id":"12313545861568689494880005558558852","expires_at":1485864494,"display":"\u20b999.03","currency_code":"INR"},"trip":{"distance_unit":"mile","duration_estimate":720,"distance_estimate":2.76},"pickup_estimate":2}
我的代码是:

 if let statusesArray = try? NSJSONSerialization.JSONObjectWithData(data!, options: []) as? [[String: Any]],
                    let user = statusesArray![0]["fare"] as? [String: Any],
                    let username = user["fare_id"] as? String {
                    // Finally we got the username
                }
                else
                {
                    print("DONE")
                }

但我没有得到票价ID的值。事实上,它的打印是从else语句中“完成”的。我尝试使用苹果的数据处理文档,但同样的错误依然存在。

您的
JSON
响应是
Dictionary
而不是
Array
,因此请将其键入
[String:AnyObject]
,然后从嵌套的
fare
字典中获取
fare\u id

if let dict = (try? NSJSONSerialization.JSONObjectWithData(data!, options: [])) as? [String: AnyObject],
   let fareDict = dict["fare"] as? [String:AnyObject]
   let username = fareDict["fare_id"] as? String {
      print(username)
}

这不是一个数组,这是一个字典。我认为@NiravD发布了解决这个问题的正确方法。除了JSON序列化部分,Eric Aya指出您的JSON是一个顶级字典,对于您的问题,您不知道您的问题在哪里,因为您在一行中进行了“3 if”测试。但它可能是最后一个出错的用户名,你不会注意到的。很抱歉,我没有把它转换成字典。数据是我从服务器直接得到的响应。此外,如果您签入它,它将显示为有效的JSON。如果我错了,请纠正我。我告诉你的是,你试图访问你的内容,就像它是一个数组,但实际上它不是数组,它是一个字典。这与JSON是否有效无关,也与您直接从服务器获取JSON无关。它就像一个符咒一样工作。@Jeesson_7 Welcome mate:)