jackson:POJO和map互转

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jackson:POJO和map互转相关的知识,希望对你有一定的参考价值。

参考技术A 有个场景就是要把pojo转成map<String,Object>,用于展示,但是自己写的感觉太丑了,一个pojo就得写一个。
比如下面这样

想看看怎么改进

参照refer,发现jackson是支持pojo和map互转的(之前只是看前辈用过,以为只是和json String互相转换用的,结果发现jackson功能太强大了,可以参照知乎的refer

非常简单

输出如下
因为其他属性都被JsonIgnore了

后续可以看看jackson源码,不过现在rocketmq源码都block住了

https://www.mkyong.com/java/java-convert-object-to-map-example/
https://stackoverflow.com/questions/35848506/how-to-convert-not-all-attributes-from-a-java-object-to-json-using-jackson-objec
https://stackoverflow.com/questions/11757487/how-to-tell-jackson-to-ignore-a-field-during-serialization-if-its-value-is-null 忽略属性值为null的
http://www.makeinjava.com/convert-list-objects-tofrom-json-java-jackson-objectmapper-example/ list和string互转
https://www.zhihu.com/question/44199956 和fastjson比较
http://vickyqi.com/2015/10/19/%E5%87%A0%E7%A7%8D%E5%B8%B8%E7%94%A8JSON%E5%BA%93%E6%80%A7%E8%83%BD%E6%AF%94%E8%BE%83/ 性能比较
http://jackson.codehaus.org/ 官网
https://github.com/FasterXML 源码

Scala 可变map与不可变map互转

object test2 {
def main(args: Array[String]): Unit = {
val im = scala.collection.immutable.Map(1->"one",2->"two") //不可变map
val imh = scala.collection.immutable.HashMap(1->"one",2->"two") //不可变hashmap
val mu = scala.collection.mutable.Map(1->"one",2->"two") //可变map
println(im,manOf(im))
println(imh,manOf(imh))
println(mu,manOf(mu))

//mutable.Map to immutable.Map
val mui = mu.toMap
println(mui,manOf(mui))

//immutable.Map to mutable.Map
val immu = scala.collection.mutable.Map(im.toSeq:_*)
println(immu,manOf(immu))
val imhmu = scala.collection.mutable.Map(imh.toSeq:_*)
println(imhmu,manOf(imhmu))

}

//查看数据类型方法-manOf(data)
def manOf[T:Manifest](t:T):Manifest[T]=manifest[T]
}

注意:

-.toSeq:将元组List转换成mutable.Map

-:_*:表示变长参数

以上是关于jackson:POJO和map互转的主要内容,如果未能解决你的问题,请参考以下文章

基于jackson的Json与对象的互相转换

利用JackSon工具将JSON文件和对象互转

jackson 常用注解,比如忽略某些属性,驼峰和下划线互转

Jackson 对象与json数据互转工具类JacksonUtil

java对象与Json互转

Java 实现 对象和转字符串之间的互转