如何从JSON串恢复对象

    /**
     * 恢复对象的部分字段信息
     * @param bean  目标对象
     * @param mapString 部分字段备份map字符串
     */
    public static void restObjectFields(Object bean, String mapString ) {
        Map<String,String> args = JSON.parseObject(mapString, new TypeReference<HashMap<String,String>>(){});
        for(Field fld : bean.getClass().getDeclaredFields()) {
            if(args.containsKey(fld.getName())){
                Object value ;
                String sval = args.get(fld.getName());
                switch(fld.getType().getSimpleName()){
                    case "LocalDate":
                        value = LocalDateUtils.toLocalDate(sval);
                        break;
                    case "BigDecimal":
                        value = new BigDecimal(sval);
                        break;
                    case "double":
                        value =  BcuConv.toDouble(sval);
                        break;
                    case "float":
                        value =  BcuConv.toFloat(sval);
                        break;
                    case "int":
                        value = BcuConv.toInteger(sval);
                        break;
                    case "Integer":
                        value = Integer.parseInt(sval);
                        break;
                    case "Long":
                        value = Long.parseLong(sval);
                        break;
                    case "Date":
                        value = BcuConv.toDate(sval);
                        break;
                    default:
                        value = sval;
                        break;
                }
                try {
                    fld.setAccessible(true);
                    fld.set(bean, value);
                } catch (IllegalAccessException e ){
                    log.error("更新字段 {} 异常", fld.getName(), e);
                }
            }
        }
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值