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

    正确无误了。

  • 相关阅读:
    第一章初识java
    初识jQuery
    初识jQuery的案例
    jdk的安装与环境变量的配置
    第六章连接和分组查询
    第五章模糊查询和聚合函数
    第四章数据查询基础
    第三章用sql语句操作数据
    第二章用表组织数据
    第一章数据库系统基础
  • 原文地址:https://www.cnblogs.com/xcong/p/3501195.html
Copyright © 2011-2022 走看看