значение типа объекта игнорируется при сериализации newtonsoft - PullRequest
0 голосов
/ 18 октября 2019

Хотите получить сериализованный вывод с игнорируемым значением по умолчанию. В моем случае я определил значение по умолчанию как ноль для свойства объекта. Возникла проблема с игнорированием значения по умолчанию на основе типа для данных объекта. найдите приведенные ниже проверенные коды.

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. Игнорировать, & NullValueHandling = NullValueHandling.Ignore.

Любой, кто посоветует это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...