给定此数据类:
data class MyPojo(val notInJson: Int, val inJson: Int)
假设我要实现以下形式的功能:
fun deserialize(jsonString: String, valueForFieldNotInJson: Int): MyPojo
其中jsonString
不包含名为的字段notInJson
。还要假设,我无法控制MyPojo
类的定义。
我怎么能使用杰克逊库反序列化MyPojo
从jsonString
和增强缺少的领域(notInJson
从)valueForFieldNotInJson
参数?
这可以通过结合MinInAnnotations和ValueInjection来实现。
完整的解决方案如下:
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)
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句