使用Newtonsoft.Json反序列化API响应JSON出现JsonSerializationException错误怎么解决
正确反序列化写法
你定义的实体类结构没有问题,出错原因是反序列化时指定的目标类型和JSON实际结构不匹配,使用以下代码即可完成解析:
// 先把JSON根对象反序列化为JsonDataType类型 JsonDataType data = Newtonsoft.Json.JsonConvert.DeserializeObject<JsonDataType>(response.Content); // 直接从解析后的对象中取result属性即可得到货币列表 List<Result> currencyList = data.result; // 后续可直接遍历currencyList使用数据
之前写法的错误原因
- 写法1:你的JSON根节点是单个对象(外层包裹
{}),不是数组,不能直接反序列化为List<JsonDataType>,这也是你报错提示的直接原因 - 写法2:调用
DeserializeObject时没有指定泛型参数,返回值是默认的object类型,无法直接作为JsonDataType类型的变量赋值 - 写法3、4:泛型参数和传入的
typeof参数逻辑冲突,且JSON根对象本身不是Result集合类型,无法直接转换
内容的提问来源于stack exchange,提问作者Pinky
相关产品推荐
相关产品推荐

