`

java中json的序列化和反序列化

    博客分类:
  • java
阅读更多
     /**
     * 由字符串反序列化成实体类  针对的是一个实体,此实体中的属性不包括自定义的类型,如Teacher类型,或者List<Teacher>类型 
     * @param source 传入json中的字符串
     * @param beanClass 实体类的类型
     * @return 实体类
     */
    public static Object getObjFromJsonArrStr(String source,Class beanClass)
    {
        JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON(source);
        return  JSONObject.toBean(jsonObject,beanClass);        
    }
    /**
     * 由字符串反序列化成实体类  针对的是一个实体,此实体中的属性包括自定义的类型,如Teacher类型,或者List<Teacher>类型
     * @param jsonArrStr
     * @param clazz
     * @param classMap
     * @return
     */
    public static Object getObjFromJsonArrStr(String jsonArrStr, Class clazz, Map classMap) 
    {  
        JSONObject jsonObj = JSONObject.fromObject(jsonArrStr);  
                return JSONObject.toBean(jsonObj, clazz, classMap);            
    }
 
     
    /**
     * 将string转换成listBean
     * @param jsonArrStr 需要反序列化的字符串
     * @param clazz 被反序列化之后的类
     * @return 实体list
     */
    @SuppressWarnings("unchecked")
    public static List getListFromJsonArrStr(String jsonArrStr, Class clazz) {  
        JSONArray jsonArr = JSONArray.fromObject(jsonArrStr);  
        List list = new ArrayList();  
        for (int i = 0; i < jsonArr.size(); i++) 
        {  
            list.add(JSONObject.toBean(jsonArr.getJSONObject(i), clazz));  
        }  
        return list;  
    } 
 
    /**
     * 将string转换成listBean 属性中包含实体类等 如List<Student> 而Student中含有属性List<Teacher>
     * @param jsonArrStr 需要反序列化的字符串
     * @param clazz 反序列化后的类
     * @param classMap 将属性中包含的如Teacher加入到一个Map中,格式如map.put("teacher",Teacher.class)
     * @return 反序列化后的字符串
     * 使用示例:
        Map classMap = new HashMap();
        //必须要对Parent进行初始化 否则不识别
        Teacher p = new Teacher();
        classMap.put("teacher", p.getClass());
        List mlist = JSONTransfer.getListFromJsonArrStr(resultStr, Student.class, classMap);
     */
    @SuppressWarnings("unchecked")
    public static List getListFromJsonArrStr(String jsonArrStr, Class clazz, Map classMap) 
    {  
       JSONArray jsonArr = JSONArray.fromObject(jsonArrStr);  
       List list = new ArrayList();  
       for (int i = 0; i < jsonArr.size(); i++) 
       {           
           list.add(JSONObject.toBean(jsonArr.getJSONObject(i), clazz, classMap));  
       }  
       return list;  
    }
         
    /**
     * 序列化操作,无论是单个的对象,还是list,抑或是list中的属性仍包含list,都可以直接序列化成String类型
     * @param obj 需要被序列化的对象
     * @return 序列化之后的字符串
     */
    @SuppressWarnings("unchecked")
    public static String getJsonArrStrFromList(Object obj) 
    { 
        //返回結果
        String jsonStr = null;  
        //判空
        if (obj == null) {  
            return "{}";  
        }  
        //Json配置      
        JsonConfig jsonCfg = new JsonConfig();  
   
        //注册日期处理器  
        jsonCfg.registerJsonValueProcessor(java.util.Date.class,  
                new JsonDateValueProcessor(SystemConstants.DateFormat));  
         
        //判断是否是list
        if (obj instanceof Collection || obj instanceof Object[]) {  
            jsonStr = JSONArray.fromObject(obj, jsonCfg).toString();  
        } else {  
            jsonStr = JSONObject.fromObject(obj, jsonCfg).toString();  
        }     
        return jsonStr; 
    } 
 摘自:http://www.cnblogs.com/luckyliu/archive/2012/04/05/2433682.html
分享到:
评论

相关推荐

    Java Json序列化与反序列化

    总结,Java中的JSON序列化与反序列化是数据交互的重要环节,Jackson和Gson是两个常用的库,它们提供了丰富的功能和良好的API设计,使得处理JSON数据变得简单高效。通过理解和掌握这些知识,开发者可以更好地在Java...

    json序列化与反序列化处理代码(java版本)

    极好的序列化与发序列化代码。可以处理array集合,数组或者单个对象等的序列化与反序列化。

    Json序列化与反序列化

    总结来说,JSON序列化与反序列化是现代Web开发中不可或缺的一部分,它提供了数据交换的标准格式,使得不同语言和平台之间的数据交互变得简单高效。正确理解和使用这一技术,能够极大地提升开发效率和软件的可维护性...

    Json序列化与反序列化详解

    在IT行业中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于服务器与客户端之间的数据...通过不断的实践和学习,开发者可以更好地驾驭JSON序列化与反序列化,从而更好地服务于项目需求。

    jackson json序列化,反序列化所需jar包

    Jackson是Java领域中广泛使用的JSON处理库,它提供了高效的JSON序列化和反序列化功能。在Java应用程序中,我们经常需要将Java对象转换为JSON字符串(序列化)或从JSON字符串恢复Java对象(反序列化),Jackson库就是...

    Json反序列化

    在本篇文章中,我们将深入探讨JSON反序列化的概念、原因以及在实际开发中的应用。 一、什么是JSON反序列化? 当一个Web服务端通过HTTP响应返回JSON格式的数据时,客户端(如浏览器或服务器端脚本)需要将这些数据...

    JSON序列化及反序列化工具

    10万次序列化,1万次反序列化,毫秒。 阿里序列化时间 1122 1054 1115 阿里反序列化时间 409 423 412 HZS序列化时间 884 864 880 HZS反序列化时间 392 375 394 JAVA7版已经逼近阿里的速度,JAVA8版利用了闭包技术...

    JSON序列化反序列化带List

    本文将深入探讨如何在Delphi中进行JSON序列化与反序列化,特别是涉及List类型的数据。 首先,从2010年开始,Delphi引入了VCL库中的`System.JSON`单元,提供了`TJSON`类和相关的函数,使得处理JSON变得十分方便。在...

    C#和Java的序列化反序列化

    Java中,除了基本的序列化机制,还有许多第三方库如Jackson、Gson等,它们提供了更高效、更灵活的JSON序列化和反序列化功能。例如,Jackson库的`ObjectMapper`类能够方便地将Java对象转换为JSON字符串,反之亦然。 ...

    Java使用JSON序列化教程

    JSON序列化与反序列化工具,常用的有第三方库如Jackson、Fastjson、Gson。 这些库提供了一些API和工具,可以将Java对象转换为JSON字符串,并将JSON字符串转换为Java对象。本文是使用这些库文件来实现JSON序列化的...

    Json序列化时动态处理属性

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于前后端数据传输。...在实际开发中,了解并熟练掌握这两个库的用法,将有助于提高工作效率,处理各种复杂的JSON序列化和反序列化场景。

    JSON序列化与反序列化JAVA工具

    10万次序列化,1万次反序列化,毫秒。 阿里序列化时间 1229 1133 1179 阿里反序列化时间 478 523 466 HZS序列化时间 1089 998 1010 HZS反序列化时间 606 623 635 测试代码如下: { org.hzs.json.JSONObject bjson...

    支持javax.money数据类型的JSON序列化和反序列化

    在Java开发中,JSON(JavaScript Object Notation)是一种广泛使用的轻量级数据交换格式,它易于人阅读和...在处理涉及货币数据的RESTful服务、微服务通信或任何需要JSON序列化的场景下,它都是一个非常实用的工具。

    又小又快又无依赖Json序列化与反序列化

    又小又快又无依赖Json序列化与反序列化 eg: 1.json序列化 String json=JsonUtil.instance().obj2Json(obj); 2.json反序列化(Object表示具体的类) Object obj=JsonUtil.instance().json2Obj(json,Object.class) ...

    json-lib 序列化和反序列化

    在`json-lib`中,序列化是指将Java对象转换成JSON字符串的过程,而反序列化则是将JSON字符串转换回Java对象。以下是对这两个过程的详细说明: 1. **序列化**: - 使用`json-lib`,你可以通过`...

    Java对象的序列化和反序列化实践

    在Java编程语言中,对象的序列化和反序列化是两个关键的概念,它们允许我们将对象的状态转换为可存储或传输的格式,然后再恢复为原始对象。这个过程对于数据持久化、网络传输以及跨进程通信等场景非常有用。下面将...

    json序列化与反序列化demo

    在Java世界里,为了方便地进行JSON的序列化(将Java对象转换为JSON字符串)和反序列化(将JSON字符串转换回Java对象),有多个库提供了强大的支持,其中包括Gson、Jackson、Fastjson以及LoganSquare。接下来,我们将...

    JSon发序列化总结

    JSON序列化和反序列化是现代Web开发中不可或缺的技术之一。在C#中,可以根据具体需求选择不同的序列化工具。对于.NET Framework项目,DataContractJsonSerializer和JavaScriptSerializer都是不错的选择;而对于.NET ...

    java 常用序列化和反序列化框架使用demo

    除了基础的JSON序列化,Jackson还支持`@JsonSerialize`和`@JsonDeserialize`注解来自定义序列化和反序列化行为。 ```java import com.fasterxml.jackson.databind.ObjectMapper; ObjectMapper mapper = new ...

    JSON序列化和反序列化.docx

    Jackson 是一个广泛使用的 Java 库,用于处理 JSON 数据的序列化和反序列化。它提供了丰富的注解,使我们能够自定义 JSON 输出的形式和行为。在这个文档中,我们将重点讨论三个关键注解:`@JsonIgnore`, `@Json...

Global site tag (gtag.js) - Google Analytics