zoukankan      html  css  js  c++  java
  • Map、JavaBean、JSON的相互转换

    package com.suning.crawler.util; 
    
    import java.lang.reflect.Method; 
    import java.text.ParseException; 
    import java.util.HashMap; 
    import java.util.Iterator; 
    import java.util.Map; 
    import org.json.JSONObject; 
    
    /** 
    *转换器 
    *1:将JavaBean 转换成Map、JSONObject 
    *2:将JSONObject 转换成Map 
    * 
    * @author xxx 
    */ 
    public class BeanConverter 
    { 
        /** 
         * 将javaBean转换成Map 
         * 
         * @param javaBean javaBean 
         * @return Map对象 
         */ 
        public static Map<String, String> toMap(Object javaBean) 
        { 
            Map<String, String> result = new HashMap<String, String>(); 
            Method[] methods = javaBean.getClass().getDeclaredMethods(); 
    
            for (Method method : methods) 
            { 
                try 
                { 
                    if (method.getName().startsWith("get")) 
                    { 
                        String field = method.getName(); 
                        field = field.substring(field.indexOf("get") + 3); 
                        field = field.toLowerCase().charAt(0) + field.substring(1); 
    
                        Object value = method.invoke(javaBean, (Object[])null); 
                        result.put(field, null == value ? "" : value.toString()); 
                    } 
                } 
                catch (Exception e) 
                { 
                } 
            } 
    
            return result; 
        } 
    
        /** 
         * 将json对象转换成Map 
         * 
         * @param jsonObject json对象 
         * @return Map对象 
         */ 
        @SuppressWarnings("unchecked") 
        public static Map<String, String> toMap(JSONObject jsonObject) 
        { 
            Map<String, String> result = new HashMap<String, String>(); 
            Iterator<String> iterator = jsonObject.keys(); 
            String key = null; 
            String value = null; 
            while (iterator.hasNext()) 
            { 
                key = iterator.next(); 
                value = jsonObject.getString(key); 
                result.put(key, value); 
            } 
            return result; 
        } 
    
        /** 
         * 将javaBean转换成JSONObject 
         * 
         * @param bean javaBean 
         * @return json对象 
         */ 
        public static JSONObject toJSON(Object bean) 
        { 
            return new JSONObject(toMap(bean)); 
        } 
    
        /** 
         * 将map转换成Javabean 
         * 
         * @param javabean javaBean 
         * @param data map数据 
         */ 
        public static Object toJavaBean(Object javabean, Map<String, String> data) 
        { 
            Method[] methods = javabean.getClass().getDeclaredMethods(); 
            for (Method method : methods) 
            { 
                try 
                { 
                    if (method.getName().startsWith("set")) 
                    { 
                        String field = method.getName(); 
                        field = field.substring(field.indexOf("set") + 3); 
                        field = field.toLowerCase().charAt(0) + field.substring(1); 
                        method.invoke(javabean, new Object[] 
                        { 
                            data.get(field) 
                        }); 
                    } 
                } 
                catch (Exception e) 
                { 
                } 
            } 
    
            return javabean; 
        } 
    
        /** 
         * 将javaBean转换成JSONObject 
         * 
         * @param bean javaBean 
         * @return json对象 
         * @throws ParseException json解析异常 
         */ 
        public static void toJavaBean(Object javabean, String data) throws ParseException 
        { 
            JSONObject jsonObject = new JSONObject(data); 
            Map<String, String> datas = toMap(jsonObject); 
            toJavaBean(javabean, datas); 
        } 
  • 相关阅读:
    python使用matplotlib的savefig保存时图片保存不清晰以及不完整的问题
    EventBus 讲解挺详细的例子
    webpack构建优化的一些点
    webpack tree-shaking 优化
    vue 自定义指令示例 v-prop
    webpack loader 开发实战 px-rpx-vw-loader
    Google商店
    前端 机器学习 pipcook
    object-fit 设置背景(内容)填充
    postMessage iframe 跨域通信
  • 原文地址:https://www.cnblogs.com/shaman/p/2953594.html
Copyright © 2011-2022 走看看