ホームページ >バックエンド開発 >C++ >Newtonsoft JSON.NET を使用して JSON を「IEnumerable」に逆シリアル化する方法は?

Newtonsoft JSON.NET を使用して JSON を「IEnumerable」に逆シリアル化する方法は?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-17 13:48:11921ブラウズ

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 を有効にする: 逆シリアル化された JSON に型情報を含めるには、JsonSerializerSettings の TypeNameHandling を All に設定します。

    <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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。