Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

347
Views
Cómo proporcionar el valor predeterminado a una propiedad booleana cuando era nulo

En el siguiente código, obtengo una excepción porque "isValid" viene como null en la solicitud de entrada.

Quiero establecer "isValid" en "False" cuando era null desde la solicitud de entrada.

¿Puede alguien por favor sugerirme cómo puedo hacer esto?

 public class Details { public string status { get; set; } public MessageInfo messageInfo { get; set; } } public class MessageInfo { public bool isValid { get; set; } } var inputMessage = { "Body": { "status":"success", "MessageInfo": { "isValid":null } } } var messagebody = inputMessage.Body.ToObject<Details>();
over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Suponiendo que está usando Newtonsoft.Json, use la propiedad NullValueHandling de la clase JsonSerializer , configurándola para ignorar . Luego pase esta instancia de JsonSerializer a una sobrecarga de la ToObject<T> .

Esto le dice a la serialización que ignore cualquier propiedad que fuera nula, dejando la propiedad inicializada en su valor predeterminado. (Puede controlar ese valor predeterminado por separado a través System.ComponentModel.DefaultValueAttribute si lo desea).

Ejemplo de compilación completa a continuación. (Se eliminaron las referencias a 'Cuerpo' para que sea más fácil concentrarse en el problema principal).

 using Newtonsoft.Json; using Newtonsoft.Json.Linq; namespace SomeNamespace { public class Program { private static void Main() { var inputMessage = JToken.Parse( @"{ ""status"":""success"", ""MessageInfo"": { ""isValid"":null } }"); // build a custom serializer with a setting to ignore null var jsonSettings = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore, }; var serializer = JsonSerializer.Create(jsonSettings); // using the serializer with custom settings avoids the original exception var messagebody = inputMessage.ToObject<Details>(serializer); } } public class Details { public string status { get; set; } public MessageInfo messageInfo { get; set; } } public class MessageInfo { public bool isValid { get; set; } } }
over 4 years ago · Santiago Trujillo Report

0

esto funciona para mi

 void Main() { var inputMessage = "{ \"Body\":{\"status\":\"success\", \"MessageInfo\":{\"isValid\":null} }}"; var inputMessageObj= JsonConvert.DeserializeObject<Root>(inputMessage); }

clases

 public class Details { public string status { get; set; } public MessageInfo messageInfo { get; set; } } public class MessageInfo { private bool? _isValid = false; public bool? IsValid { get { return _isValid; } set { _isValid = value == null ? false : value; } } } public class Body { public string Status { get; set; } public MessageInfo MessageInfo { get; set; } } public class Root { public Body Body { get; set; } }
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!