ホームページ > バックエンド開発 > 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 を有効にする: 逆シリアル化された 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート