实体转换为map

今天在调用支付接口时需要使用JSON形式参数向第三方发送请求, 整个流程需要调用好几个第三方接口, 这时就想到了可不可以把接收到的实体直接转换成map, 这样的话就不需要一个接口组装一次了, 于是就有了这一篇记录.

package com.pay.payversion.util;

import com.google.common.collect.Maps;
import java.lang.reflect.Field;
import java.util.Arrays;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;

/**
 * @author: gst
 * @date: 2023/6/5 11:19
 */
public class EntityToMapUtil {
    public static <T> Map<String,Object> entityToMap(T t){
        Map<String,Object> map = Maps.newHashMap();
        //动态获取该类
        Class clazz = (Class) t.getClass();
        //取所有属性
        Field[] fields = clazz.getDeclaredFields();
        //将fields数组转化为集合使用stream流转换为map
        map = Arrays.stream(fields).collect(Collectors.toMap(Field::getName, field -> {
            Object resultObj = null;
            //屏蔽java语言的访问检查  打开可以访问私有属性的权限
            field.setAccessible(true);
            try {
                resultObj = field.get(t);
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
            //Optional 类(java.util.Optional) 是一个容器类,它可以保存类型T的值,代表这个值存在。或者仅仅保存null,表示这个值不存在。原来用 null 表示一个值不存在,现在 Optional 可以更好的表达这个概念。并且可以避免空指针异常。
            //是 Java 8 中 Optional 类的一个方法,它的作用是将一个可能为 null 的对象转换为 Optional 对象,并在该对象不为 null 时执行一个函数,否则返回一个默认值。
            //因为Collectors.toMap(key,value)中的value值不能为空, 所以这里使用Optional.ofNullable().orElse(), 为空则为""
            return Optional.ofNullable(resultObj).orElse("");
        }, (k1, k2) -> k2));
        return map;
    }


}

这个是使用反射获取的数据,最后转换成map的, 当时第一反应就是想到了用反射

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晨生.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值