我正在尝试从bean(它的属性)获取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
)
如您所见,这并没有将嵌套bean转换为映射propertyWithBean
,然后在使用时scala.util.parsing.json.JSONObject(map.asScala.toMap)
不会输出有效的JSON。
有没有办法做mapper.convertValue递归?
您可以Map
使用convertValue(Object, Class)
class方法以完全递归的方式将Bean转换为ObjectMapper
:
val m = new ObjectMapper()
val map = m.convertValue(bean, classOf[java.util.Map[_, _]])
然后可以通过以下方式将地图打印为JSON:
println(m.writeValueAsString(bean))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句