Deserialization de Jackson: classs de datos de Kotlin: valores pnetworkingeterminados para campos faltantes por asignador

Dada esta class de datos:

data class MyPojo(val notInJson: Int, val inJson: Int) 

Supongamos que quiero implementar una function del formulario:

 fun deserialize(jsonString: String, valueForFieldNotInJson: Int): MyPojo 

Donde jsonString no incluye un campo llamado notInJson . Supongamos también que no tengo control sobre la definición de la class MyPojo .

¿Cómo podría usar la biblioteca de Jackson para deserializar MyPojo de jsonString y boost el campo que falta (no notInJson ) del parámetro valueForFieldNotInJson ?

Notas:

  • Básicamente, la pregunta es sobre la deserialization de una class inmutable, donde algunos campos provienen de Json y otros se suministran en time de ejecución.
  • El uso de deserializadores o constructores personalizados no funcionará porque no se conocen los valores faltantes en el momento de la compilation.

Esto se puede lograr combinando MinInAnnotations y ValueInjection .

Solución completa de la siguiente manera:

 data class MyPojo(val notInJson: Int, val inJson: Int) class MyPojoMixIn { @JacksonInject("notInJson") val notInJson: Int = 0 } fun deserialize(jsonString: String, valueForFieldNotInJson: Int): MyPojo { val injectables = InjectableValues.Std().addValue("notInJson", valueForFieldNotInJson) val reader = jacksonObjectMapper() .addMixIn(MyPojo::class.java, MyPojoMixIn::class.java) .readerFor(MyPojo::class.java) .with(injectables) return reader.readValue(jsonString) } 
  • firebase db: models con properties delegadas de Kotlin
  • ¿Hay alguna forma mejor de escribir invocaciones de CompletableFutrue.XXXasync () en kotlin?
  • ¿Hay alguna forma less fea de regresar a la function en Kotlin?
  • ¿Cuál es el equivalente de este código de java a kotlin
  • Dagger 2 multibindings con Kotlin
  • En la dependency injection Kodein, ¿cómo se puede inyectar instancias de Kodein en instancias?
  • Diseño sintético y personalizado de Kotlin en DialogFragment
  • Daga 2 inyectando el model de vista de actividad en fragment
  • Fusionar observables dependientes
  • Función de límite en Kotlin
  • Kotlin: ¿Cuando la function de extensión oculta la implementación pnetworkingeterminada de la class?