`
SpaceCity
  • 浏览: 98815 次
  • 性别: 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;
}

相关推荐

    json转Map,转javaBean,javBean和Map转json

    本篇将详细介绍如何在Java中进行JSON到Map、JavaBean以及反之的转换,并探讨相关工具的使用。 1. JSON到Map的转换: 当我们接收到一个JSON字符串时,可以将其转换为Map对象以便于操作。在Java中,我们可以使用开源...

    javabean_map_string和json互转详细文档+例子

    JavaBean和Map以及String与JSON之间的转换在Java开发中是非常常见的操作。这涉及到Java对象的序列化和反序列化,通常用于数据交换或持久化存储。以下是对这些转换的详细解释和示例。 1. JavaBean到JSON JavaBean是...

    java_android_javaBean json转换工具类的标准代码

    javaBean、列表数组转换为json字符串 javaBean、列表数组转换为json字符串,忽略空值 json 转JavaBean json字符串转换为map 深度转换json成map 把json解析成list,如果list内部的元素存在jsonString,继续解析 与...

    JAVA-JSON工具转换类

    `json-lib`是一个Java语言实现的JSON库,它提供了多种数据类型到JSON的转换,包括JavaBean、Map、List、数组等。`json-lib-2.4-jdk15.jar`是这个库的一个版本,兼容JDK15。它提供了许多功能,例如将Java对象转化为...

    json与JavaBean、Map和list之间的转换问题.doc

    JSON 与 JavaBean、Map 和 List 之间的转换问题 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互。在 Java 开发中,经常需要将 JSON 数据与 JavaBean、Map ...

    javabean转换为json格式用到的所有包

    在JSON转换中,可能用于处理非标准类型的数据,如自定义类或复杂类型的转换。 6. **commons-logging-1.1.jar**:Apache Commons Logging库,提供了一个统一的日志接口,可以适配多种日志实现。在转换过程中,如果...

    首字母大写的json串转为javabean实例

    首先,解析JSON字符串到`Map, Object&gt;`,然后遍历这个映射,将键(属性名)转换为驼峰式,并创建对应的JavaBean实例,设置属性值。 5. **使用工具类或方法**:可以创建一个静态方法或者工具类,接收JSON字符串和...

    json转换JavaBean

    因此,将JSON转换为JavaBean意味着将JSON的键值对映射到Java类的属性。 2. **手动转换** 手动转换是通过编程的方式,逐个解析JSON字符串,然后设置到JavaBean的相应字段。这需要编写大量的解析代码,效率较低且...

    Desktop_javaBean转换Map工具_

    将JavaBean转换为Map是一种常见的需求,特别是在处理数据绑定、JSON序列化或者存储时。标题“Desktop_javaBean转换Map工具_”暗示了这是一个方便的工具或代码片段,用于快速将JavaBean实例转换为Map对象。 描述中...

    Java和JSON之间的相互转换所需要所有的jar包及实例

    首先,`json-lib`是一个非常流行的Java JSON库,它提供了多种Java数据类型与JSON之间的转换功能,包括JavaBean、Map、List、数组等。要使用`json-lib`,你需要确保你的项目中包含了以下jar包: 1. json-lib-2.x.y....

    java与json互相转换的jar包

    以下是对给定的jar包文件及其在Java与JSON转换中的作用的详细解释: 1. **json-lib-2.4-jdk15.jar.zip**:这是JSON库的核心,用于实现Java对象与JSON字符串之间的转换。Json-lib提供了多种类型的转换方法,例如将...

    json与bean的转换

    对于嵌套的JSON对象,可以转换为Map或其他复杂的Java对象结构。 此外,JSON-lib还支持将JavaBean转换为JSON。只需要调用`JSONObject.fromObject()`方法,传入JavaBean实例即可: ```java JSONObject json = ...

    Java代码实现Map和Object互转及Map和Json互转

    在Java开发中,常常需要在Map和对象之间,以及Map和JSON之间进行转换。这样的转换在处理Web请求、数据存储和传输时非常常见。Java本身并没有提供直接的转换机制,但通过一些第三方库或反射机制,我们可以实现这些...

    JSON-lib

    2. **Map到JSON**:对于包含键值对的数据结构,如HashMap,可以使用`JSONObject.fromObject(Map)`方法将其转换为JSON对象。这将保留原始Map中的键作为JSON对象的键,而值则根据类型转化为相应的JSON值。 3. **...

    java中用ObjectMapper类实现Json与bean的转换示例

    主要给大家介绍了关于在java中用ObjectMapper类实现Json与bean转换的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习学习吧。

    json转换为String/List/Map/Bean

    json转换为String/List/Map/Bean

    json包括依靠包

    例如,当我们要将一个JavaBean转换为JSON时,`commons-beanutils`可以帮助我们轻松地访问和操作JavaBean的属性,然后`json-lib`则负责实际的JSON编码工作。反过来,当我们从JSON解析数据时,`json-lib`会将JSON对象...

    json-lib 技术指南

    JSON-lib 支持对 `List`, `Set`, `Map` 等集合类型的转换。例如,`JSONArray.fromObject()` 和 `JSONObject.fromObject()` 可以将这些集合转换为 JSON 数组或对象。 7. **JSON 函数与表达式** JSON-lib 还提供 `...

    json包

    Json-lib支持多种Java类型到JSON的转换,如JavaBean、Map、Collection、数组等,同时也支持将JSON字符串解析为这些Java类型。它对于不支持原生JSON的JDK版本尤其有用。 3. `commons-lang-2.5.jar`:Apache Commons ...

Global site tag (gtag.js) - Google Analytics