Значение по умолчанию c значение из JSON свойство с пустой строкой - PullRequest
0 голосов
/ 24 апреля 2020

Я пытаюсь десериализовать строку JSON, которая содержит пустое строковое значение для одного свойства ... это свойство должно быть проанализировано в decimal свойстве класса ...

public class myClass {
  public decimal my_value { get; set; } = 0;
}
var json = "{ \"my_value\": \"\" }";
var data = JsonConvert.DeserializeObject<myClass>(json);

Проблема в том, что данные возвращаются как null объект.

Я попытался установить для свойства значение decimal?, и это действительно возвращает объект, но my_value - это null когда мне нужно по умолчанию 0.

Я также попробовал следующее, но он возвращает объект null (используя decimal или decimal?) ...

  [System.ComponentModel.DefaultValue(0)]
  [JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)]
  public decimal my_value { get; set; } = 0;

Как мне установить для этого значения по умолчанию значение 0, если JSON содержит пустую строку для свойства?

Прежде чем кто-либо это заявит ... да, простой ответ - не иметь свойства пустой строки в JSON, но я ничего не могу с этим поделать

1 Ответ

1 голос
/ 24 апреля 2020

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

настройки будут выглядеть так, если вы используете Newtonsoft. Вы можете узнать больше здесь

var = jsonSettings = new JsonSerializerSettings
{
    NullValueHandling = NullValueHandling.Ignore
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...