Closed
Description
Bug description
When I pass no value for an ID field with default value I get an exception:
"com.fasterxml.jackson.databind.exc.MismatchedInputException: No Object Id found for an instance of"
whereas com.fasterxml.jackson.databind.ObjectMapper sets default value.
To Reproduce
package testSuite
import com.fasterxml.jackson.annotation.JsonIdentityInfo
import com.fasterxml.jackson.annotation.ObjectIdGenerators
import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
import org.junit.Test
class ObjectId {
@JsonIdentityInfo(property = "id", generator = ObjectIdGenerators.PropertyGenerator::class)
class MyStateObject(
var id: String = "0",
var name: String? = null,
var description: String? = null
)
@Test
fun readJson() {
val mapperDataBind = ObjectMapper()
val stateDataBind1 = mapperDataBind.readValue("{\"id\":\"1\",\"name\":\"abc\"}", MyStateObject::class.java)
assert(stateDataBind1.id == "1")
val stateDataBind2 = mapperDataBind.readValue("{\"name\":\"abc\"}", MyStateObject::class.java)
assert(stateDataBind2.id == "0")
val mapperModule = jacksonObjectMapper()
val stateModule1 = mapperModule.readValue("{\"id\":\"1\",\"name\":\"abc\"}", MyStateObject::class.java)
assert(stateModule1.id == "1")
val stateModule2 = mapperModule.readValue("{\"name\":\"abc\"}", MyStateObject::class.java) // here I get an exception
assert(stateModule2.id == "0")
}
}
Expected behavior
- Not to get an exception.
- Default value has set.
Versions
Kotlin: 1.3.72
Jackson-module-kotlin: 2.9.9
Jackson-databind: 2.9.9