使用各种 json 工具先转字符串 json 再转 map 也可以,但是还得处理日期啊什么的这些特殊字符,而且这种方式也很难受啊。
有什么好用的工具吗?
使用各种 json 工具先转字符串 json 再转 map 也可以,但是还得处理日期啊什么的这些特殊字符,而且这种方式也很难受啊。
有什么好用的工具吗?
|
jamesliu96Jul 23, 2019 via Android
1
我以前是自己用反射写,也是苦于找不到能完成需求的工具
|
|
chendyJul 23, 2019
2
好奇什么场景…会有这种需求
|
|
BBCCBBJul 23, 2019
3
Jackson 就可以
|
|
BBCCBBJul 23, 2019
4
有 convert 的 api.
|
|
BBCCBBJul 23, 2019
5
或者 dozer 也可以,不过 jackson 就可以满足需求,没必要引入 dozer
|
|
6
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 |
|
cubecubeJul 23, 2019 via Android
7
没有太好的,都有很大的性能损耗。不在乎的话,json 就行。或者 beanutils
在乎的话,mapstruct |
|
passerbytinyJul 23, 2019
8
需求场景几乎不存在,自己用反射写吧。
|
|
qwerthhusnJul 23, 2019
9
@jamesliu96 6 楼满足你的需求
|
|
wysnylcJul 23, 2019
10
最简单的方式,转成 json 字符串再反序列化
|
|
springmarkerJul 23, 2019
11
自己写反射咯,当然还得考虑父类的字段
|
|
leafShimpleJul 23, 2019
12
fastjson 直接用
|
|
letitbesqzrJul 23, 2019
13
hutool 工具类中 BeanUtil.beanToMap
也是通过反射实现 |
|
cheng6563Jul 23, 2019 via iPhone
14
fastjson 直接转成 JSONObject,就是一个 map
|
|
cheng6563Jul 23, 2019 via iPhone
15
fastjson 转了之后还有一堆入 getIntValue 之类的实用方法,真心觉得 fastjson 的 API 是最好用的了
|
|
CoderGeekJul 23, 2019
16
CGLIB BeanMap
|
|
cassyfarJul 24, 2019
17
Jackson
|
|
VariazioniJul 24, 2019
18
fastjson 来回倒腾转一下就行。。。挺好用的。。
|
|
fff333Jul 24, 2019
19
推荐 gson,fast 经常爆漏洞
|
|
HolmLohJul 24, 2019 via Android
20
反射吧,我都是写好抽象类,需要转 map 的话直接继承的
|
|
niaobulashiJul 24, 2019
21
```
/** * java bean 转 Map * @param bean * @param propNames 需要放到 map 中的属性名称 * @return */ public static Map<String,Object> beanToMap(Object bean, String...propNames) { Map<String,Object> rtn = new HashMap<String,Object>(); if(ArrayUtils.isEmpty(propNames)){ List<String> fieldNames = getFieldNames(bean.getClass()); for (String fieldName: fieldNames) { Object value = getProperty(bean, fieldName); rtn.put(fieldName, value); } }else{ for(String propName: propNames){ Object value = getProperty(bean, propName); rtn.put(propName, value); } } return rtn; } ``` |
|
niaobulashiJul 24, 2019
22
emmmm,评论不能用 md 格式了🐎
|
|
brustJul 24, 2019
23
Gson,FastJSON
|
|
zhybb2010Jul 24, 2019
24
不要管性能,速度,拿起 fastjson 就是一套 comb。
|
|
wo0uewjuoiJul 24, 2019
25
@fff333 前几个礼拜刚刚按要求升级 fast 版本防漏洞。。。
|
|
quadrapopJul 24, 2019
27
6 楼写法挺大佬的
|
|
xuanbgJul 24, 2019
28
用 json 序列化对象再反序列化成 Map 呀,还要什么自行车。。。话说我们对象复制、对象转换也是这样搞,爽歪歪
|
|
twoyuanJul 24, 2019
29
Kotlin 的话就定义个扩展函数的事:
fun Any.objToMap() = this::class.declaredMemberProperties.map { it.name to it.call(this) }.toMap() |
|
LeeSeoungJul 24, 2019
30
使用 beanutils.describe
|
|
abaiJul 24, 2019
31
BeanMap
|