Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

2.2K
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda