【发布时间】:2018-11-15 18:48:43
【问题描述】:
我正在尝试从 bean(它的属性)中获取 json。使用 Jackson,我设法获得了 Map,但转换似乎不是递归的。
我的 bean 有嵌套的 bean,所以下面的代码:
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
)
如您所见,这并没有将嵌套 bean propertyWithBean 转换为映射,因此在使用 scala.util.parsing.json.JSONObject(map.asScala.toMap) 时不会输出有效的 JSON。
有没有办法让 mapper.convertValue 递归?
【问题讨论】: