ホームページ > バックエンド開発 > C++ > Json.NET での JSON 逆シリアル化中に未定義のプロパティを検出するにはどうすればよいですか?

Json.NET での JSON 逆シリアル化中に未定義のプロパティを検出するにはどうすればよいですか?

DDD
リリース: 2025-01-19 02:51:08
オリジナル
739 人が閲覧しました

How Can I Detect Undefined Properties During JSON Deserialization with Json.NET?

Json.NET を使用して逆シリアル化後の未定義プロパティを検出する

JSON ベースのアプリケーションでは、逆シリアル化エラーを効率的に処理することが重要です。 Json.NET のデフォルトの動作では、黙ってデフォルト値に戻りますが、例外をスローする必要がある状況もあります。

このニーズを満たすために、Json.NET は MissingMemberHandling 設定を提供します。このプロパティを Error に設定すると、対応するモデル プロパティなしで JSON プロパティを逆シリアル化しようとすると、JsonSerializationException がトリガーされます。

次のコードを考えてみましょう:

<code class="language-csharp">using Newtonsoft.Json;
using System;

namespace JsonFailTest
{
    [JsonObject(MemberSerialization.OptOut)]
    public class MyJsonObjView
    {
        [JsonProperty("MyJsonInt")]
        public int MyJsonInt { get; set; }
    }

    public static class Program
    {
        public static void Main(string[] args)
        {
            string correctData = @"{'MyJsonInt': 42}";
            string wrongData = @"{'SomeOtherProperty': 'fbe8c20b'}";

            var goodObj = JsonConvert.DeserializeObject<MyJsonObjView>(correctData);
            Console.WriteLine(goodObj.MyJsonInt);

            try
            {
                JsonSerializerSettings settings = new JsonSerializerSettings
                {
                    MissingMemberHandling = MissingMemberHandling.Error
                };

                var badObj = JsonConvert.DeserializeObject<MyJsonObjView>(wrongData, settings);
                Console.WriteLine(badObj.MyJsonInt);
            }
            catch (Exception ex)
            {
                Console.WriteLine($"{ex.GetType().Name}: {ex.Message}");
            }
        }
    }
}</code>
ログイン後にコピー

この変更されたコードを使用すると、wrongData オブジェクトの逆シリアル化により次のエラーが発生するようになります:

<code>System.Runtime.Serialization.Json.JsonSerializationException: Could not find member 'SomeOtherProperty' on object of type 'MyJsonObjView'. Path 'SomeOtherProperty', line 3, position 33.</code>
ログイン後にコピー

このエラー メッセージは、逆シリアル化の失敗の原因となったプロパティを明確に識別するため、デバッグがより効率的になります。 MissingMemberHandling 設定を使用すると、逆シリアル化中に厳密な属性検証を強制して、データの整合性を確保できます。

以上がJson.NET での JSON 逆シリアル化中に未定義のプロパティを検出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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