07-20-2023, 06:48 AM
I've a Kotlin data class that looks like this,
data class SomeData(
private val notInJson: String = "some default value",
private val inJson: String
)
and a json string, I wish to deserialize into an instance of this class -
{
"inJson" : "value"
}
When I try to deserialize this data, I get an error that the parameter ```notInJson``` cannot be null. Seems like Jackson is passing a null value for it since it's missing in the json string.
Is there a way to have Jackson not pass in any value for it, so that the default specified in the class definition could be used?
--EDIT--
I do register a KotlinModule() with the mapper. Using version 2.7.8 or all jackson packages involved.
The following code -
@Test fun jackson_kotlin_module() {
val mapper = ObjectMapper().registerModule(KotlinModule())
println(
mapper.readValue("""{ "inJson" : "some value" }""", SomeData::class.java))
}
gives me -
com.fasterxml.jackson.databind.JsonMappingException: Instantiation of [simple
type, class SomeData] value failed (java.lang.IllegalArgumentException):
Parameter specified as non-null is null: method SomeData.<init>, parameter
notInJson
at [Source: { "inJson" : "some value" }; line: 1, column: 27]
data class SomeData(
private val notInJson: String = "some default value",
private val inJson: String
)
and a json string, I wish to deserialize into an instance of this class -
{
"inJson" : "value"
}
When I try to deserialize this data, I get an error that the parameter ```notInJson``` cannot be null. Seems like Jackson is passing a null value for it since it's missing in the json string.
Is there a way to have Jackson not pass in any value for it, so that the default specified in the class definition could be used?
--EDIT--
I do register a KotlinModule() with the mapper. Using version 2.7.8 or all jackson packages involved.
The following code -
@Test fun jackson_kotlin_module() {
val mapper = ObjectMapper().registerModule(KotlinModule())
println(
mapper.readValue("""{ "inJson" : "some value" }""", SomeData::class.java))
}
gives me -
com.fasterxml.jackson.databind.JsonMappingException: Instantiation of [simple
type, class SomeData] value failed (java.lang.IllegalArgumentException):
Parameter specified as non-null is null: method SomeData.<init>, parameter
notInJson
at [Source: { "inJson" : "some value" }; line: 1, column: 27]