JSON反序列化失败:无法将JSON对象解析为对象列表
在尝试将JSON字符串反序列化为自定义对象列表时,您可能会遇到错误:“无法将当前JSON对象(例如:{"name":"value"}
)反序列化为类型'System.Collections.Generic.List1',因为该类型需要一个JSON数组(例如:
[1,2,3]`)才能正确反序列化”。
此错误是由于JSON结构与预期格式不匹配造成的。JSON数组用于表示列表或集合,而JSON对象用于表示键值对。在本例中,JSON字符串包含单个对象,其“data”属性是一个对象数组。要解决此问题,您需要将JSON字符串反序列化为适当的类结构。
理解JSON结构
提供的JSON字符串结构如下:
<code class="language-json">{"data":[{"target_id":9503123,"target_type":"user"}]}</code>
它包含一个单个对象,其“data”属性是一个对象数组。
更正反序列化代码
导致错误的代码行是:
<code class="language-csharp">List<rootobject> datalist = JsonConvert.DeserializeObject<list>(jsonstring);</code>
此行尝试将JSON字符串反序列化为RootObject对象的列表。但是,JSON字符串包含单个对象,而不是对象列表。要修复此错误,请将代码更改为:
<code class="language-csharp">RootObject datalist = JsonConvert.DeserializeObject<rootobject>(jsonstring);</code>
此更正后的代码将JSON字符串反序列化为单个RootObject对象,该对象与JSON结构正确匹配。
结论
通过确保代码与JSON结构正确匹配,您可以解决“无法反序列化当前JSON对象”错误。了解JSON字符串的预期格式对于成功反序列化至关重要。
以上是为什么我的 JSON 反序列化失败并显示'无法反序列化当前 JSON 对象...”?的详细内容。更多信息请关注PHP中文网其他相关文章!