как динамически установить значение ItemNullValueHandling в c# - PullRequest
0 голосов
/ 27 мая 2020

У меня есть требование показать свойство в базе ответа на значении свойства класса. Если мы инициализируем класс по умолчанию, все свойства инициализируются. Итак, я хочу игнорировать свойства, основанные на свойстве.

Вот мой класс

[JsonObject(ItemNullValueHandling = NullValueHandling.Ignore)]
    Public class Student
    {
     public string name{get; set;}
    public string address{get;set;}
    public bool success{get;set;}
    }

В указанном выше классе, на основе значения success . Я должен решить показать свойства в ответ, даже если они равны нулю

Я думал, что одно решение сохраняло

[JsonObject (ItemNullValueHandling = NullValueHandling.Ignore)]

, но динамически мне нужно установить значение ItemNullValueHandling Я не знал, как установить динамически, может ли кто-нибудь предложить мне.

Заранее спасибо!

1 Ответ

0 голосов
/ 27 мая 2020

Вы не сможете динамически изменять настройки сериализации с использованием атрибутов, поскольку они фиксируются во время компиляции.

Однако вы можете передать экземпляр JsonSerializerSettings методу Deserialize (), как показано ниже.

    var showAllProperties = student.success;
    var serializerSettings = new JsonSerializerSettings {
        NullValueHandling = showAllProperties ? NullValueHandling.Include : NullValueHandling.Ignore;
    }
    var result = JsonConvert.SerializeObject(student, serializerSettings)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...