非空对象属性value替换

场景:实现可配置的Url拼接,便于web端对接对某些参数进行调整,url格式有一定的规律可控性,只需要对其中某些字段做修改控制。

替换实现方法

1.提取对象中value值为null的属性字段

    public static String[] getNUllPropertyNames(Object source){
        final BeanWrapper src = new BeanWrapperImpl(source);
        PropertyDescriptor[] pds = src.getPropertyDescriptors();
        Set<String> emptyNames = new HashSet<>();
        for (PropertyDescriptor pd : pds) {
            Object srcValue = src.getPropertyValue(pd.getName());
            if(srcValue == null){
                emptyNames.add(pd.getName());
            }
        }
        String[] result = new String[emptyNames.size()];
        return emptyNames.toArray(result);
    }

2.使用BeanUtil.copyProperties(source,target,getNullPropertyNames(source))

将上述的空值属性名排除,这样就可以完成替换

    /**
     * 将提供的source类型信息 替换为目标拼接信息target
     * @param source 需要修改的信息
     * @param target 生成新的结构信息
     * @return
     */
    public static Object copyNoNullProperties(Object source,Object target){
        BeanUtil.copyProperties(source,target,getNUllPropertyNames(source));
        return target;
    }

3.根据上述方法,获取原信息,得到前端存库需要替换信息,完成替换。

由于产生的数据这里采取了Object形式进行接收,这里采取反射,将它转换为JSON格式并返回相应原数据类型

        Object copyresult = copyNoNullProperties(setInfo, thirdUrlInfo1);
        JSONObject jsonInfo = JSONUtil.parseObj(copyresult);
        ThirdUrlInfo result = JSONUtil.toBean(jsonInfo, thirdUrlInfo.getClass());
        System.out.println(result);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值