c# json.net

c# - Valor predeterminado para las propiedades que faltan con JSON.net



(1)

Estoy usando Json.net para serializar objetos a la base de datos.

Agregué una nueva propiedad a la clase (que falta en json en la base de datos) y quiero que la nueva propiedad tenga un valor predeterminado cuando falta en el json.

Intenté el atributo DefaultValue pero no funciona. Estoy usando setters y constructores privados para deserializar el json, por lo que establecer el valor de la propiedad en el constructor no funcionará ya que hay un parámetro con el valor.

Lo siguiente es un ejemplo:

class Cat { public Cat(string name, int age) { Name = name; Age = age; } public string Name { get; private set; } [DefaultValue(5)] public int Age { get; private set; } } static void Main(string[] args) { string json = "{/"name/":/"mmmm/"}"; Cat cat = JsonConvert.DeserializeObject<Cat>(json); Console.WriteLine("{0} {1}", cat.Name, cat.Age); }

Espero que la edad sea 5 pero es cero.

¿Alguna sugerencia?


Encontré la respuesta, solo necesito agregar el siguiente atributo también:

[JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)]

En tu ejemplo:

class Cat { public Cat(string name, int age) { Name = name; Age = age; } public string Name { get; private set; } [DefaultValue(5)] [JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)] public int Age { get; private set; } } static void Main(string[] args) { string json = "{/"name/":/"mmmm/"}"; Cat cat = JsonConvert.DeserializeObject<Cat>(json); Console.WriteLine("{0} {1}", cat.Name, cat.Age); }

Consulte la referencia Json.Net