javabean、xml、json、map之间的相互转换

javabean转map

利用cglib的BeanMap类实现转换

import org.springframework.cglib.beans.BeanMap;

/**
 * 
 * @Title: beanToMap
 * @Description: javabean转map
 * @param bean
 * @return
 */
public static <T> Map<String, Object> beanToMap(T bean) {
    Map<String, Object> beanMap = new HashMap<>(16);
    if (bean != null) {
        BeanMap tempMap = BeanMap.create(bean);
        for (Object key : tempMap.keySet()) {
            String putKey = String.valueOf(key);
            Object putValue = tempMap.get(key);
            beanMap.put(putKey, putValue);
        }
    }
    return beanMap;
}

/**
 * 
 * @Title: beanListToMapList
 * @Description: List<T>转换为List<Map<String,Object>>
 * @param beanList
 * @return
 */
public static <T> List<Map<String, Object>> beanToMapBatch(List<T> beanList) {
    List<Map<String, Object>> beanMapList = new ArrayList<>(16);
    if (beanList != null && beanList.size() > 0) {
        for (T bean : beanList) {
            Map<String, Object> beanMap = beanToMap(bean);
            beanMapList.add(beanMap);
        }
    }
    return beanMapList;
}

map转javabean

利用cglib的BeanMap类实现转换

import org.springframework.cglib.beans.BeanMap;

/**
 * 
 * @Title: mapToBean
 * @Description: map转javabean
 * @param beanMap
 * @param bean
 * @return
 */
public static <T> T mapToBean(Map<String, Object> beanMap, T bean) {
    BeanMap tempMap = BeanMap.create(bean);
    tempMap.putAll(beanMap);
    return bean;
}

/**
 * 
 * @Title: mapToBean
 * @Description: map转javabean
 * @param beanMap
 * @param beanClass
 * @return
 * @throws InstantiationException
 * @throws IllegalAccessException
 */
public static <T> T mapToBean(Map<String, Object> beanMap, Class<T> beanClass)throws InstantiationException, IllegalAccessException {
    T bean = beanClass.newInstance();
    BeanMap tempMap = BeanMap.create(bean);
    tempMap.putAll(beanMap);
    return bean;
}

/**
 * 
 * @Title: mapToBeanBatch
 * @Description: List<Map<String,Object>>转List<T>
 * @param beanMap
 * @param beanClass
 * @return
 * @throws IllegalAccessException
 * @throws InstantiationException
 */
public static <T> List<T> mapToBeanBatch(List<Map<String, Object>> beanMap, Class<T> beanClass)
            throws InstantiationException, IllegalAccessException {
    List<T> beanList = new ArrayList<>(16);
    if (beanMap != null && beanMap.size() > 0) {
        for (Map<String, Object> tempMap : beanMap) {
            T bean = mapToBean(tempMap, beanClass);
            beanList.add(bean);
        }
    }
    return beanList;
}

xml转map

使用dom4j

/**
 * 
 * @Title: parseXmlToMap
 * @Description: 解析xml,并返回map
 * @return
 * @throws IOException
 * @throws DocumentException
 */
public static Map<String, Object> parseXmlToMap(HttpServletRequest request) throws IOException, DocumentException {
    // 将解析的结果存入map集合中
    Map<String, Object> map = new HashMap<>(16);
    // 从request中获取流
    InputStream inputStream = request.getInputStream();
    // 使用dom4j读取输入流
    SAXReader reader = new SAXReader();
    Document document = reader.read(inputStream);
    // 得到xml根元素
    Element root = document.getRootElement();
    // 得到根元素的所有子节点
    List<Element> elementList = root.elements();
    // 迭代
    for (Element e : elementList) {
        map.put(e.getName(), e.getText());
    }
    inputStream.close();
    inputStream = null;
    return map;
}

xml转bean

使用jackson

/**
 * 
 * @Title: xmlToBean
 * @Description: xml转换成bean
 * @param request
 * @param beanClass
 * @return
 * @throws IOException
 */
public static <T> T xmlToBean(HttpServletRequest request, Class<T> beanClass) throws IOException {
    // 获取输入流
    InputStream inputStream = request.getInputStream();
    XmlMapper xmlMapper = new XmlMapper();
    T bean = xmlMapper.readValue(inputStream, beanClass);
    inputStream.close();
    inputStream = null;
    return bean;
}

jackson相关注解
@JacksonXmlRootElement(localName = "xml")
public class TextMessage implements Serializable {
    /**
     * 序列化
     */
    private static final long serialVersionUID = 2501424341457570501L;
    /**
     * 开发者微信号
     */
    @JacksonXmlProperty(localName = "ToUserName")
    @JacksonXmlCData(value = true)
    private String ToUserName;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值