Skip to content

MismatchedInputException: No Object Id found for an instance of #378

Closed
@veniaminM

Description

@veniaminM

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions