在Swift3中解析JSON数据

时间:2017-05-24 13:28:22

标签: json swift parsing

我正在尝试解析Swift3中的JSON数据。当我尝试打印整个jsonResult时,可以正常打印所有JSON文件。但是,当我尝试解析它时,我遇到了问题。

这是我的JSON文件的控制台输出:

{
    city =     {
        coord =         {
            lat = "37.323";
            lon = "-122.0322";
        };
        country = US;
        id = 5341145;
        name = Cupertino;
        population = 58302;
    };
}

这是我解析文件的代码:

if let jsonResult = try JSONSerialization.jsonObject(with: data!) as? NSDictionary{
                print(jsonResult) //this prints all the file OK
                if let city = jsonResult["city"] as? Dictionary<String, AnyObject>{
                    if let country = city["country"] as? Dictionary<String, AnyObject>{
                        print(country) //this is not printing anything
                    }
                }

我尝试过稍微不同的方法,但我找不到解决方案。我无法理解问题所在。任何人都可以帮我一把吗?先感谢您。

2 个答案:

答案 0 :(得分:3)

&#34;国家&#34;你的json中的键不是一个字典,这就是为什么你没有得到任何输出。

尝试使用以下代码

if let jsonResult = try JSONSerialization.jsonObject(with: data!) as? Dictionary<String:Any>{
            print(jsonResult) //this prints all the file OK
            if let city = jsonResult["city"] as? Dictionary<String, Any>{
                print(city["country"]) // to check what is the output
                if let country = city["country"] as? String{
                    print(country) //this is not printing anything
                }
            }

答案 1 :(得分:2)

请参阅@MartinR&#39。他是绝对正确的,基于此也是@Nishant Bhindi的答案。

警告!!!!

来自JSON ORG

  

字符串是零个或多个Unicode字符的序列,包含在内   双引号,使用反斜杠转义。

看来,你尝试解析的不是有效的JSON ...