JSON 转成javabean对象比较好实用的工具包

在项目开始使用中前端如果使用jsonp请求后台请求没法使用@RequestBody 来接受参数对象问题发现了一个好用的json 包
<!- 引入以下包 -->
<dependency>
	<groupId>net.sf.json-lib</groupId>
	<artifactId>json-lib</artifactId>
	<version>2.4</version>
</dependency>

里面提供了将JSON 串转换成指定的javabean 对象的方法(但是注意,如果需要转换的对象中存在泛型,或者接口对象是无法转换的)

具体使用如下

classMap需要指定 需要转换的对象中非简单对象中对象是什么

public class ShippingOutInPortVO extends ShippingOutInPort {
	private static final long serialVersionUID = -1740987828210144747L;
	/**这里需要指定 persons 是什么对象的集合*/
	private List<ShippingOutPortPersonVO> persons;
    public List<ShippingOutPortPersonVO> getPersons() {
        return persons;
    }

    public void setPersons(List<ShippingOutPortPersonVO> persons) {
        this.persons = persons;
    }
}
Map<String, Class> classMap = new HashMap<>();
classMap.put("images", FileModel.class);
classMap.put("persons", ShippingOutPortPersonVO.class);
ShippingOutInPortVO shippingOutPortVO = (ShippingOutInPortVO) BeanUtils.convertMapToBean(map, ShippingOutInPortVO.class,classMap);
/**
     * 将map 中的data 属性转换成指定的对象类型
     * @param map 前台参数
     * @param clzss  需要转本的class
     * @param classMap 内部包含class集合
     * @return
     */
    public static Object convertMapToBean(Map<String,Object> map,Class clzss,Map<String,Class> classMap){
        String json = (String) map.get("data");
        if(StringUtils.isEmpty(json)){
            return null;
        }
        JSONObject d= JSONObject.fromObject(json);
        return JSONObject.toBean(d, clzss,classMap);
    }

特别需要注意的一点
JSONObject 不认识时间格式yyyy-MM-dd HH:mm:ss
需要在toBean 之前 加上

 JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(new String[] {"yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss"}));

以上就可以将json对象转换成 指定的javabean对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值