Home > Backend Development > C++ > How Can I Detect Undefined Properties During JSON Deserialization with Json.NET?

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

DDD
Release: 2025-01-19 02:51:08
Original
701 people have browsed it

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

Using Json.NET to detect undefined properties after deserialization

In JSON-based applications, it is critical to handle deserialization errors efficiently. While the default behavior of Json.NET is to silently fall back to default values, there are situations where exceptions need to be thrown.

To meet this need, Json.NET provides MissingMemberHandling settings. By setting this property to Error, any attempt to deserialize a JSON property without a corresponding model property will trigger JsonSerializationException.

Consider the following code:

<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>
Copy after login

With this modified code, deserialization of the wrongData object will now result in the following error:

<code>System.Runtime.Serialization.Json.JsonSerializationException: Could not find member 'SomeOtherProperty' on object of type 'MyJsonObjView'. Path 'SomeOtherProperty', line 3, position 33.</code>
Copy after login

This error message clearly identifies the property that caused the deserialization to fail, making debugging more efficient. By using the MissingMemberHandling setting, you can force strict attribute validation during deserialization to ensure data integrity.

The above is the detailed content of How Can I Detect Undefined Properties During JSON Deserialization with Json.NET?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template