首页 > 解决方案 > 对象类型值在 newtonsoft 序列化时被忽略

问题描述

想要获得忽略默认值的序列化输出。就我而言,我已将对象属性的默认值定义为 null。面临忽略对象数据基于类型的默认值的问题。找到以下尝试过的代码。

MyClass myClass = new MyClass();
            myClass.item1 = false;
            myClass.item2 = 0;
            myClass.item3 = "test";
            myClass.item4 = new { item1Val = false, item2Val = 0, item3Val = "test" };


            var output = JsonConvert.SerializeObject(myClass, Formatting.Indented, new JsonSerializerSettings
                {
                    DefaultValueHandling = DefaultValueHandling.Ignore,
                    NullValueHandling = NullValueHandling.Ignore
                });

//...

public class MyClass
    {
        [DefaultValue(true)]
        public bool item1 { get; set; }

        [DefaultValue(10)]
        public int item2 { get; set; }

        [DefaultValue("")]
        public string item3 { get; set; }

        [DefaultValue(null)]
        public object item4 { get; set; }
    }

实际输出:


{
  "item1": false,
  "item2": 0,
  "item3": "test",
  "item4": {
    "item3Val": "test"
  }
}

预期输出:


{
  "item1": false,
  "item2": 0,
  "item3": "test",
  "item4": {
    "item1Val": false,
    "item2Val": 0,
    "item3Val": "test"
  }
}

注意:我需要这个全局设置 DefaultValueHandling = DefaultValueHandling.Ignore, & NullValueHandling = NullValueHandling.Ignore。

任何人都对此提出建议。

标签: c#json.net

解决方案


推荐阅读