Джексон из Json выбрасывает исключение при преобразовании пустого сына

В scala я пытаюсь преобразовать json обратно в класс case, но json иногда содержит пустую строку. В этих случаях он выбрасывает:

com.fasterxml.jackson.databind.JsonMappingException: Instantiation of [simple type, class Person] value failed: null
  at com.fasterxml.jackson.databind.deser.std.StdValueInstantiator.wrapException(StdValueInstantiator.java:399)
  at com.fasterxml.jackson.databind.deser.std.StdValueInstantiator.createFromObjectWith(StdValueInstantiator.java:231)
  at com.fasterxml.jackson.databind.deser.impl.PropertyBasedCreator.build(PropertyBasedCreator.java:135)
  at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:442)
  at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1099)
  at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:296)
  at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:133)
  at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3736)
  at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2726)
  at JacksonUtil$.fromJson(<console>:142)
  ... 58 elided
Caused by: java.lang.NullPointerException
  ... 66 more

Мой конвертер:

object JacksonUtil {

  private var mapper = new ObjectMapper() with ScalaObjectMapper
  intializeMapper( )

  def intializeMapper() = {
    // jackson library does not support seralization and deserialization of
// of scala classes like List and Map, this is needed to support it
mapper.registerModule( DefaultScalaModule )
// enables parsing of NaN. Enabling it here as JsonUtil class currently in
// use supports it.
mapper.configure(JsonParser.Feature.ALLOW_NON_NUMERIC_NUMBERS, true )
mapper.setSerializationInclusion(Include.NON_NULL)
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
mapper.setSerializationInclusion(Include.NON_EMPTY)
mapper.setSerializationInclusion(Include.NON_ABSENT)
mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false)


  }

  def fromJson(json: String, clazz: Class[_]) = {
     try {
    mapper.readValue( json, clazz )
    } catch {
      case e: com.fasterxml.jackson.core.JsonParseException => {
       println("Error while parsing JSON " + json)
      }
    }
  }
}

Кто-нибудь может сказать, что я здесь делаю не так?

case class Person(itemId: Map[String, Int], itemNames: Map[String, Int]) extends Serializable

val test = """{}"""
JacksonUtil.fromJson(test, classOf[Person])

Есть ли какая-нибудь конфигурация, которую я должен добавить? Я не могу изменить картограф Джексона из-за некоторых ограничений.

Я получаю такое же исключение, когда пытаюсь использовать правильный:

 val test1 = """{"itemId": {"A": 1,"B": 8},"itemNames": {"AMC" : 2, "Regal" : 5}"""
    JacksonUtil.fromJson(test1, classOf[Person])

person user3407267    schedule 22.03.2018    source источник
comment
Думаю, этот пост ответит на ваш вопрос stackoverflow.com/questions/21246733/   -  person Saurabh Gupta    schedule 23.03.2018
comment
@SaurabhGupta Пробовал, но все равно не получается   -  person user3407267    schedule 23.03.2018
comment
Я пробовал ваш код, и он мне подходит. Ваша вторая строка JSON неверна, в конце нужно }. Я пробовал комментировать //mapper.setSerializationInclusion(Include.NON_ABSENT), поскольку этой конфигурации нет в версии Джексона, которую я использую. Я получил Person(null,null) Person(Map(A -> 1, B -> 8),Map(AMC -> 2, Regal -> 5)) после того, как отредактировал вашу вторую строку JSON.   -  person vindev    schedule 23.03.2018