Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

2.2K
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda