Преобразование бина в карту с Джексоном рекурсивно - PullRequest
0 голосов
/ 15 ноября 2018

Я пытаюсь получить JSON из бобов (это свойства).Используя Джексона, мне удалось получить карту, но преобразование не выглядит рекурсивным.

В моих бобах есть вложенные бины, поэтому следующий код:

val m = new ObjectMapper()
val mapType: MapType = m.getTypeFactory.constructMapType(classOf[java.util.Map[_, _]], classOf[String], classOf[Any])
val map = mapAsScalaMapConverter(m.convertValue(bean, mapType).asInstanceOf[java.util.HashMap[String, Any]])
println(map.asScala.toMap)

печатает:

Map(
    propertyOne -> true,
    propertyTwo -> false,
    propertyThree -> [],
    propertyWithBean -> {
        propertyOne=false,
        propertyTwo=0,
    },
    propertyFour -> blah
)

Как видите, это не преобразование в карту вложенного компонента propertyWithBean, который при использовании scala.util.parsing.json.JSONObject(map.asScala.toMap) не выводит действительный JSON.

Есть ли способ сделать рекурсивный mapper.convertValue?

1 Ответ

0 голосов
/ 16 ноября 2018

Вы можете преобразовать бин в Map полностью рекурсивным способом с методом convertValue(Object, Class) класса ObjectMapper:

val m = new ObjectMapper()
val map = m.convertValue(bean, classOf[java.util.Map[_, _]])

Тогда карта может быть напечатана в формате JSON:

println(m.writeValueAsString(bean))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...