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

2.2K
Views
¿Cómo ignorar la lista vacía al serializar a json?

Estoy tratando de descubrir cómo serializar en un objeto json y omitir la serialización de propiedades cuyos valores son listas vacías. No estoy usando Newtonsoft json

 using System.Text.Json; using System.Text.Json.Serialization; using AutoMapper;

Tengo un objeto con una propiedad.

 [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] [JsonPropertyName("extension")] public List<Extension> Extension { get; set; }

Cuando intento serializar este objeto usando lo siguiente

 var optionsJson = new JsonSerializerOptions { WriteIndented = true, IgnoreNullValues = true, PropertyNameCaseInsensitive = true, }; var json = JsonSerializer.Serialize(report, optionsJson);

Todavía me da una matriz vacía:

 "extension": [],

¿No hay una manera de evitar que serialice estas listas vacías? Me gustaría ver la extension desaparecida. No debería estar allí en absoluto. Necesito hacer esto porque la puerta de enlace responderá con un error si envío:

 "extension": null,

No debe ser parte del objeto cuando se serializa.

error de puerta de enlace

La razón por la que no quiero estas listas vacías es que la puerta de enlace de terceros que estoy enviando objetos a listas vacías

"gravedad": "error", "código": "procesamiento", "diagnóstico": "La matriz no puede estar vacía; la propiedad no debe estar presente si no tiene valores", "ubicación": [ "Bundle.entry[2 ].resource.extension", "Línea 96, Col 23" ]

Estoy tratando de evitar hacer algún tipo de reemplazo de cadena desagradable en esto.

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Puede agregar una propiedad ficticia que se usa durante la serialización que maneja esto.

  • Agregue una nueva propiedad con la misma firma, pero márquela con JsonPropertyNameAttribute para asegurarse de que se serialice con el nombre correcto y también con JsonIgnoreAttribute para que no se serialice cuando devuelva un valor nulo.
  • La propiedad original que marca con JsonIgnore, incondicionalmente, para que nunca se serialice.
  • Esta propiedad ficticia devolvería null (y, por lo tanto, se ignoraría) cuando la propiedad real contiene una lista vacía; de lo contrario, devolvería esa lista (no vacía).
  • Escribe en la propiedad ficticia solo escribe en la propiedad real

Algo como esto:

 [JsonIgnore] public List<Extension> Extensions { get; set; } = new(); [JsonPropertyName("extension")] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public List<Extension> SerializationExtensions { get => Extensions?.Count > 0 ? Extensions : null; set => Extensions = value ?? new(); }
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!