zoukankan      html  css  js  c++  java
  • [Cannot deserialize JSON array into type] NewtonSoft.Json解析数据出错原因

    今天用NewtonSoft.JSon解析一个天气数据,数据格式如:

    {"status":1,"detail":"u6570u636eu83b7u53d6u6210u529f","data":[[{"date":"2014-01-01","dis_id":"1119","dis_name":"u5f90u5ddeu5e02","url":"http://www.tianqiyubao.com/local.php?dis_id=1119","weather":"1","wind":"u897fu98ce3-4u7ea7","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":"u5f90u5ddeu5e02","url":"http://www.tianqiyubao.com/local.php?dis_id=1119","weather":"1","wind":"u897fu98ce3-4u7ea7","weather_name":"u6674","weather_pic":"styles/images/icon2/day/1.png","humidity":"","tem":"13"},{"date":"2014-01-01","dis_id":"1119","dis_name":"u5f90u5ddeu5e02","url":"http://www.tianqiyubao.com/local.php?dis_id=1119","weather":"1","wind":"u5317u98ce3-4u7ea7","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.

    google之发现一个问题和我很相似,也就没细想就照着写了。写完之后发现还是报错。两个问题链接如下:

    http://stackoverflow.com/questions/9452901/cannot-deserialize-json-array-into-type-json-net

    http://stackoverflow.com/questions/5224697/deserializing-json-when-sometimes-array-and-sometimes-object

    最后还是报错。仔细发现有两个方框号,原来是自己实体类的设计有问题,

    原实体类:

            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; }

    正确无误了。

  • 相关阅读:
    POJ 2251 Dungeon Master
    HDU 3085 Nightmare Ⅱ
    CodeForces 1060 B Maximum Sum of Digits
    HDU 1166 敌兵布阵(树状数组)
    HDOJ 2050 折线分割平面
    HDU 5879 Cure
    HDU 1878 欧拉回路
    HDU 6225 Little Boxes
    ZOJ 2971 Give Me the Number
    HDU 2680 Choose the best route
  • 原文地址:https://www.cnblogs.com/xcong/p/3501195.html
Copyright © 2011-2022 走看看