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

298
Visualizações
¿Cómo controlar el diseño de la serialización polimórfica de Kotlinx?

Tengo un json que contiene una lista de objetos polimórficos,

 { "someList": [ { "type": "A", "value": {"aProp": false } }, { "type": "B", "value": {"bProp": "1" } }, ] }

que representa una jerarquía de tipos como esta:

 sealed class Base class A(val aProp: Boolean): Base() class B(val aProp: String): Base() class BaseList(val someList: List<Base>)

Me gustaría deserializar el JSON en tales tipos,

pero el serializador de sellos/kotlinx polimórfico predeterminado lee y escribe el discriminador en el objeto mismo, así:

 { "someList": [ { "type": "A", "aProp": false }, { "type": "B", "bProp": "1" } ] }

mientras que obtuve el discriminador fuera del objeto mismo.

¿Cómo puedo deserializar tal JSON en esta jerarquía de tipo Kotlin?

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Si no desea escribir un serializador personalizado, debe hacer coincidir la estructura de su JSON. Su JSON original representa un objeto dentro de un objeto, por lo que tendrá que hacer algo como:

 data class A(val value: AValue): Base() data class AValue(val aProp: Boolean)
over 4 years ago · Santiago Trujillo Relatório

0

¡Buena pregunta! Me molesta tanto que todavía no haya un estándar para el polimorfismo en JSON.

No creo que escribir un serializador personalizado sea un enfoque deseable aquí. Tendría que aplicar serializadores personalizados en todo el código base. En su lugar, probablemente sea mejor que introduzca un paso de procesamiento previo y posterior cada vez que serialice JSON. Por lo tanto, intercepte el JSON y conviértalo a un formato compatible con kotlinx.serialization .

La serialización de Kotlinx también admite "polimorfismo de matriz" en la configuración JSON, que personalmente prefiero pero es mucho menos común. Almacena el tipo en el primer elemento y el valor en el segundo de una matriz. Esto parece similar en intención a su formato de destino. Con un transformador JSON, debería ser bastante trivial convertir todos los objetos de type y value en una matriz con dos elementos.

Ps. Le sugiero que publique sobre su caso de uso como una solicitud de función en GitHub. Los mantenedores son muy receptivos a la retroalimentación. Parece que algún tipo de patrón de estrategia para lidiar con diferentes formatos de polimorfismo está en orden.

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