首页 > 后端开发 > C++ > 为什么尝试将对象转换为列表时 JSON 反序列化失败?

为什么尝试将对象转换为列表时 JSON 反序列化失败?

Susan Sarandon
发布: 2025-01-08 06:00:40
原创
771 人浏览过

Why Does JSON Deserialization Fail When Trying to Convert an Object to a List?

JSON反序列化问题:无法将对象转换为列表

在尝试将JSON对象反序列化为自定义对象的列表时,开发人员可能会遇到错误:“无法将当前JSON对象(例如:{"name":"value"})反序列化为类型'System.Collections.Generic.List`1[...]'”。当JSON结构与目标反序列化类型不匹配时,就会出现此问题。

请考虑以下代码片段:

<code class="language-csharp">string jsonstring = "{\"data\":[{\"target_id\":9503123,\"target_type\":\"user\"}]}";
List<RootObject> datalist = JsonConvert.DeserializeObject<List<RootObject>>(jsonstring);</code>
登录后复制

在此场景中,目标反序列化类型为List,期望一个RootObject对象的JSON数组。但是,JSON字符串表示的是单个RootObject对象,包含在一个名为“data”的数组中。

解决方案:

为了解决这个问题,必须调整目标反序列化类型以与JSON结构对齐。

正确的反序列化:

<code class="language-csharp">RootObject data = JsonConvert.DeserializeObject<RootObject>(jsonstring);</code>
登录后复制

通过将反序列化类型更改为RootObject,代码现在与JSON结构对齐,反序列化过程成功完成,不会出现上述错误。 如果需要访问target_idtarget_type,则需要进一步处理data对象,例如:data.data[0].target_id

以上是为什么尝试将对象转换为列表时 JSON 反序列化失败?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板