使用NSJSONSerialization来解析JSON

使用NSJSONSerialization来解析JSON

本文介绍了使用NSJSONSerialization来解析JSON的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在这方面已经发生了太多的讨论,但我无法弄清楚如何解决我的问题。

Too many discussions have happened on this and yet I can't figure out how to solve my problem.

这是我从WorldWeatherOnline获得的JSON数据。 JSON有效。但我无法弄清楚如何解析它。这是我的代码,后面是JSON。请帮忙!

Here's the JSON data I get from WorldWeatherOnline. The JSON is valid. But I can't figure out how to parse it. This is my code, followed by the JSON. Please help!

NSError* errorInfo;
NSDictionary *parsedJSON = [NSJSONSerialization JSONObjectWithData:self.wwoWeatherData options:kNilOptions error:&errorInfo];

NSArray* temp = [parsedJSON objectForKey:@"temp_C"];
NSLog(@"%@", temp);




   {
   "data":{
      "current_condition":[
         {
            "cloudcover":"0",
            "humidity":"82",
            "observation_time":"11:07 PM",
            "precipMM":"0.0",
            "pressure":"1024",
            "temp_C":"16",
            "temp_F":"61",
            "visibility":"10",
            "weatherCode":"113",
            "weatherDesc":[
               {
                  "value":"Clear"
               }
            ],
            "weatherIconUrl":[
               {
                  "value":"http:\/\/www.worldweatheronline.com\/images\/wsymbols01_png_64\/wsymbol_0008_clear_sky_night.png"
               }
            ],
            "winddir16Point":"NNE",
            "winddirDegree":"30",
            "windspeedKmph":"11",
            "windspeedMiles":"7"
         }
      ],
      "request":[
         {
            "query":"Lat 48.85 and Lon 2.35",
            "type":"LatLon"
         }
      ],
      "weather":[
         {
            "date":"2012-09-04",
            "precipMM":"0.0",
            "tempMaxC":"25",
            "tempMaxF":"77",
            "tempMinC":"14",
            "tempMinF":"57",
            "weatherCode":"113",
            "weatherDesc":[
               {
                  "value":"Sunny"
               }
            ],
            "weatherIconUrl":[
               {
                  "value":"http:\/\/www.worldweatheronline.com\/images\/wsymbols01_png_64\/wsymbol_0001_sunny.png"
               }
            ],
            "winddir16Point":"N",
            "winddirDegree":"5",
            "winddirection":"N",
            "windspeedKmph":"13",
            "windspeedMiles":"8"
         },
         {
            "date":"2012-09-05",
            "precipMM":"0.0",
            "tempMaxC":"22",
            "tempMaxF":"72",
            "tempMinC":"10",
            "tempMinF":"50",
            "weatherCode":"113",
            "weatherDesc":[
               {
                  "value":"Sunny"
               }
            ],
            "weatherIconUrl":[
               {
                  "value":"http:\/\/www.worldweatheronline.com\/images\/wsymbols01_png_64\/wsymbol_0001_sunny.png"
               }
            ],
            "winddir16Point":"NNE",
            "winddirDegree":"25",
            "winddirection":"NNE",
            "windspeedKmph":"20",
            "windspeedMiles":"13"
         },
         {
            "date":"2012-09-06",
            "precipMM":"0.0",
            "tempMaxC":"22",
            "tempMaxF":"71",
            "tempMinC":"11",
            "tempMinF":"51",
            "weatherCode":"113",
            "weatherDesc":[
               {
                  "value":"Sunny"
               }
            ],
            "weatherIconUrl":[
               {
                  "value":"http:\/\/www.worldweatheronline.com\/images\/wsymbols01_png_64\/wsymbol_0001_sunny.png"
               }
            ],
            "winddir16Point":"NE",
            "winddirDegree":"42",
            "winddirection":"NE",
            "windspeedKmph":"15",
            "windspeedMiles":"10"
         },
         {
            "date":"2012-09-07",
            "precipMM":"0.0",
            "tempMaxC":"24",
            "tempMaxF":"75",
            "tempMinC":"13",
            "tempMinF":"55",
            "weatherCode":"116",
            "weatherDesc":[
               {
                  "value":"Partly Cloudy"
               }
            ],
            "weatherIconUrl":[
               {
                  "value":"http:\/\/www.worldweatheronline.com\/images\/wsymbols01_png_64\/wsymbol_0002_sunny_intervals.png"
               }
            ],
            "winddir16Point":"ENE",
            "winddirDegree":"56",
            "winddirection":"ENE",
            "windspeedKmph":"13",
            "windspeedMiles":"8"
         },
         {
            "date":"2012-09-08",
            "precipMM":"0.0",
            "tempMaxC":"26",
            "tempMaxF":"78",
            "tempMinC":"16",
            "tempMinF":"61",
            "weatherCode":"113",
            "weatherDesc":[
               {
                  "value":"Sunny"
               }
            ],
            "weatherIconUrl":[
               {
                  "value":"http:\/\/www.worldweatheronline.com\/images\/wsymbols01_png_64\/wsymbol_0001_sunny.png"
               }
            ],
            "winddir16Point":"ENE",
            "winddirDegree":"76",
            "winddirection":"ENE",
            "windspeedKmph":"9",
            "windspeedMiles":"6"
         }
      ]
   }
}


推荐答案

您解析的json包含一个名为 data 。在该字典中是一个 current_condition 的数组。继续向下钻取数据结构以找到您要查找的属性:

Your json that you parsed contains a dictionary named data. Within that dictionary is an array of current_condition. Keep drilling down through the data structures to find the attributes you are looking for:

NSDictionary *data = [parsedJSON objectForKey:@"data"];
NSArray *currentConditions = [data objectForKey:@"current_condition"];
NSDictionary *condition = [currentConditions objectAtIndex:0];
NSString *tempC = [condition objectForKey:@"temp_C"];

这篇关于使用NSJSONSerialization来解析JSON的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-02 18:06