首页 > 后端开发 > C++ > 如何使用 Newtonsoft JSON.NET 将 JSON 反序列化为'IEnumerable”?

如何使用 Newtonsoft JSON.NET 将 JSON 反序列化为'IEnumerable”?

Linda Hamilton
发布: 2025-01-17 13:48:11
原创
919 人浏览过

How to Deserialize JSON into an `IEnumerable` using Newtonsoft JSON.NET?

使用Newtonsoft JSON.NET将JSON反序列化为IEnumerable<基类>

假设JSON表示具有多态类型的对象列表:

<code>[
  {
    "$id": "1",
    "$type": "MyAssembly.ClassA, MyAssembly",
    "Email": "[email protected]"
  },
  {
    "$id": "2",
    "$type": "MyAssembly.ClassB, MyAssembly",
    "Email": "[email protected]"
  }
]</code>
登录后复制

以及抽象基类和派生类:

<code>public abstract class BaseClass
{
    public string Email;
}
public class ClassA : BaseClass
{
}
public class ClassB : BaseClass
{
}</code>
登录后复制

将JSON反序列化为IEnumerable<基类>

要将JSON反序列化为IEnumerable<基类>,请按照以下步骤操作:

  1. 启用TypeNameHandling: 将JsonSerializerSettings的TypeNameHandling设置为All,以便在反序列化的JSON中包含类型信息。

    <code> JsonSerializerSettings settings = new JsonSerializerSettings
     {
         TypeNameHandling = TypeNameHandling.All
     };</code>
    登录后复制
  2. 序列化JSON: 使用已配置的设置序列化对象列表。

    <code> string strJson = JsonConvert.SerializeObject(instance, settings);</code>
    登录后复制
  3. 修改后的JSON: 序列化的JSON将包含$type信息,生成的JSON如下所示:

    <code> {
       "$type": "System.Collections.Generic.List`1[[MyAssembly.BaseClass, MyAssembly]], mscorlib",
       "$values": [
         {
           "$id": "1",
           "$type": "MyAssembly.ClassA, MyAssembly",
           "Email": "[email protected]"
         },
         {
           "$id": "2",
           "$type": "MyAssembly.ClassB, MyAssembly",
           "Email": "[email protected]"
         }
       ]
     }</code>
    登录后复制
  4. 反序列化JSON: 使用启用了TypeNameHandling的设置将修改后的JSON反序列化为基类。

    <code> IEnumerable<BaseClass> obj = JsonConvert.DeserializeObject<IEnumerable<BaseClass>>(strJson, settings);</code>
    登录后复制

通过按照这些步骤,您可以成功地将JSON反序列化为IEnumerable<基类>,包括具有多态类型的对象。

以上是如何使用 Newtonsoft JSON.NET 将 JSON 反序列化为'IEnumerable”?的详细内容。更多信息请关注PHP中文网其他相关文章!

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