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) } 
  • Kotlin en Android: ¿hay un requisito mínimo de nivel de API?
  • ¿Las funciones en línea de Kotlin son less costosas que las classs anónimas de Java?
  • Kotlin Oither mónada: refactorización de una llamada de constructor para manejar CPS
  • Miembro de Kotlin y extensión al mismo time
  • Llamar a kotlin funciones que son palabras key en java de java?
  • arrayListOf y hashMapOf: reference no resuelta
  • ¿Cómo anular el método setter en kotlin?
  • ¿Plumando Kotlin para la finalización automática del eclipse?
  • El order de ejecución de los grupos es incorrecto en Kotlin Spek
  • Jackson ready only collections
  • kotlin: cómo puedo llamar a la function desde la expresión del object