Java 对象转 map 有什么好用的工具吗?

2019-07-23 17:53:45 +08:00
 rizon

使用各种 json 工具先转字符串 json 再转 map 也可以,但是还得处理日期啊什么的这些特殊字符,而且这种方式也很难受啊。

有什么好用的工具吗?

13290 次点击
所在节点    程序员
31 条回复
jamesliu96
2019-07-23 18:05:57 +08:00
我以前是自己用反射写,也是苦于找不到能完成需求的工具
chendy
2019-07-23 18:07:06 +08:00
好奇什么场景…会有这种需求
BBCCBB
2019-07-23 18:09:14 +08:00
Jackson 就可以
BBCCBB
2019-07-23 18:09:20 +08:00
有 convert 的 api.
BBCCBB
2019-07-23 18:10:10 +08:00
或者 dozer 也可以,不过 jackson 就可以满足需求,没必要引入 dozer
qwerthhusn
2019-07-23 18:18:37 +08:00
public static Map<String, Object> main(Object args) {
return Arrays.stream(BeanUtils.getPropertyDescriptors(args.getClass()))
.filter(pd -> !"class".equals(pd.getName()))
.collect(HashMap::new,
(map, pd) -> map.put(pd.getName(), ReflectionUtils.invokeMethod(pd.getReadMethod(), args)),
HashMap::putAll);
}

写的,很简单,前提是用了 JDK8 或者以上,用了 Spring
cubecube
2019-07-23 18:20:33 +08:00
没有太好的,都有很大的性能损耗。不在乎的话,json 就行。或者 beanutils
在乎的话,mapstruct
passerbytiny
2019-07-23 18:23:23 +08:00
需求场景几乎不存在,自己用反射写吧。
qwerthhusn
2019-07-23 18:24:28 +08:00
@jamesliu96 6 楼满足你的需求
wysnylc
2019-07-23 19:54:15 +08:00
最简单的方式,转成 json 字符串再反序列化
springmarker
2019-07-23 20:40:28 +08:00
自己写反射咯,当然还得考虑父类的字段
leafShimple
2019-07-23 20:54:54 +08:00
fastjson 直接用
letitbesqzr
2019-07-23 22:05:04 +08:00
hutool 工具类中 BeanUtil.beanToMap

也是通过反射实现
cheng6563
2019-07-23 22:30:22 +08:00
fastjson 直接转成 JSONObject,就是一个 map
cheng6563
2019-07-23 22:32:11 +08:00
fastjson 转了之后还有一堆入 getIntValue 之类的实用方法,真心觉得 fastjson 的 API 是最好用的了
CoderGeek
2019-07-23 22:39:47 +08:00
CGLIB BeanMap
cassyfar
2019-07-24 03:02:01 +08:00
Jackson
Variazioni
2019-07-24 08:30:49 +08:00
fastjson 来回倒腾转一下就行。。。挺好用的。。
fff333
2019-07-24 09:12:14 +08:00
推荐 gson,fast 经常爆漏洞
HolmLoh
2019-07-24 09:22:07 +08:00
反射吧,我都是写好抽象类,需要转 map 的话直接继承的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/585522

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX