`
SpaceCity
  • 浏览: 97712 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

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);
    }
0
0
分享到:
评论
4 楼 wzwahl36 2015-10-07  
Json在线转Javabean工具 http://www.atool.org/json2javabean.php
3 楼 vit 2014-01-09  
哎呀。。2楼说的对啊。。。
2 楼 brightfox 2013-09-11  
value = jsonObject.getString(key);
这一步是不是需要判断一下,这个value有可能还是一个json对象
1 楼 wyyl1 2013-05-24  
谢谢,bean转Map的方法不错,但是在使用过程中,发现不能获取父类的属性,所以修改了一下,代码如下:

/**
* 将javaBean转换成Map
*
* @param javaBean
*            javaBean
* @return Map对象
*/
public static Map<String, Object> toMap(Object javaBean) {
Map<String, Object> result = new HashMap<String, Object>();

// 获取父类参数
Class<?> superClazz = javaBean.getClass().getSuperclass();
int i = 1;
System.out.println("super" + i + " = " + superClazz);
while (superClazz != Object.class) {
Method[] methods = javaBean.getClass().getSuperclass()
.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);
}
} catch (Exception e) {
}
}

superClazz = superClazz.getClass().getSuperclass();

System.out.println("super" + ++i + " = " + superClazz);
}

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);
}
} catch (Exception e) {
}
}

return result;
}

相关推荐

Global site tag (gtag.js) - Google Analytics