今天用NewtonSoft.JSon解析一个天气数据,数据格式如:
{\"status\":1,\"detail\":\"\\u6570\\u636e\\u83b7\\u53d6\\u6210\\u529f\",\"data\":[[{\"date\":\"2014-01-01\",\"dis_id\":\"1119\",\"dis_name\":\"\\u5f90\\u5dde\\u5e02\",\"url\":\"http:\\/\\/www.tianqiyubao.com\\/local.php?dis_id=1119\",\"weather\":\"1\",\"wind\":\"\\u897f\\u98ce3-4\\u7ea7\",\"weather_name\":\"\\u6674\",\"weather_pic\":\"styles\\/images\\/icon2\\/day\\/1.png\",\"humidity\":\"\",\"tem_min\":\"1\",\"tem_max\":\"13\",\"sunrise\":\"07:17\",\"sunset\":\"17:12\",\"pm\":\"109\",\"air\":\"\\u826f\",\"day_night\":[{\"date\":\"2014-01-01\",\"dis_id\":\"1119\",\"dis_name\":\"\\u5f90\\u5dde\\u5e02\",\"url\":\"http:\\/\\/www.tianqiyubao.com\\/local.php?dis_id=1119\",\"weather\":\"1\",\"wind\":\"\\u897f\\u98ce3-4\\u7ea7\",\"weather_name\":\"\\u6674\",\"weather_pic\":\"styles\\/images\\/icon2\\/day\\/1.png\",\"humidity\":\"\",\"tem\":\"13\"},{\"date\":\"2014-01-01\",\"dis_id\":\"1119\",\"dis_name\":\"\\u5f90\\u5dde\\u5e02\",\"url\":\"http:\\/\\/www.tianqiyubao.com\\/local.php?dis_id=1119\",\"weather\":\"1\",\"wind\":\"\\u5317\\u98ce3-4\\u7ea7\",\"weather_name\":\"\\u6674\",\"weather_pic\":\"styles\\/images\\/icon2\\/night\\/1.png\",\"humidity\":\"\",\"tem\":\"1\"}]}]]}
结果就老报一个错误。
Cannot deserialize JSON array (i.e. [1,2,3]) into type \'SweetWeather.MoreDayWeatherInfoFullDay\'.
The deserialized type must be an array or implement a collection interface like IEnumerable, ICollection or IList.
To force JSON arrays to deserialize add the JsonArrayAttribute to the type. Path \'data[0]\', line 1, position 69.
最后还是报错。仔细发现有两个方框号,原来是自己实体类的设计有问题,
原实体类:
public string status { get; set; }
public string detail { get; set; }
public List<MoreDayWeatherInfoFullDay> data { get; set;
更正后的实体类:
public string status { get; set; }
public string detail { get; set; }
public List<List<MoreDayWeatherInfoFullDay>> data { get; set; }
正确无误了。