json反射java对象_Java 将JSON反射到实体类

当服务间调用返回的JSON数据与实体类不完全匹配时,可以通过反射将JSON转换为Java实体对象。提供了一个Map转实体对象的方法,通过设置字段访问权限并利用反射设置值。示例代码展示了如何使用泛型进行类型转换,简化了手动转换的过程。
摘要由CSDN通过智能技术生成

通过服务间调用拿到的数据返回的格式是JSON,如果你当前这个服务有实体数据类型可以对应上,那么就可以轻松愉快的搞定。

如果数据格式对不上,例如这个JSON里面有些数据是我们不想要的,这样我们实体的数据类型就可能对应不上,需要通过反射的方式来转换

/**

* Map转成实体对象

*

* @param map map实体对象包含属性

* @param clazz 实体对象类型

* @return T

*/

public static T map2Object(Map map, Class extends T> clazz) {

if (map == null) {

return null;

}

T obj = null;

try {

obj = clazz.newInstance();

Field[] fields = obj.getClass().getDeclaredFields();

for (Field field : fields) {

int mod = field.getModifiers();

if (Modifier.isStatic(mod) || Modifier.isFinal(mod)) {

continue;

}

field.setAccessible(true);

field.set(obj, map.get(field.getName()));

}

} catch (Exception e) {

e.printStackTrace();

}

return obj;

}

代码从别处拉过来的,但是不是很符合要求(我不想手动转换类型),我将返回值改为泛型,java中静态方法泛型的声明格式为:

public static T map2Object(Map map, Class extends T> clazz) {}

当然、泛型个数可以是多个,反回值可以是其中一个已定义的泛型,例如:

public static T1 map2Object(T1 t1, T2 t2, T3 t3) {}

使用它:

// 远程调用通过发布人id获取用户信息

R r = remoteMemberService.queryMemberByMemberId(publishId);

// 通过实体过滤JSON中数据

BlogMemberInfo s = BeanUtils.map2Object(r.getData(), BlogMemberInfo.class);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值