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

序列化对象为JSON格式

阅读更多

import java.beans.IntrospectionException;
    import java.beans.Introspector;
    import java.beans.PropertyDescriptor;
    import java.math.BigDecimal;
    import java.math.BigInteger;
    import java.util.List;
    import java.util.Map;
    import java.util.Set;
    /**
     * 序列化对象为JSON格式 遵循JSON组织公布标准
     * 
     * @date 2008/05/07
     * @version 1.0.0
     */
    public class Json {
        /** Commons Logging instance. */
        private static org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog(Json.class);
        /**
         * @param obj 任意对象
         * @return String
         */
        public static String object2json(Object obj) {
            StringBuilder json = new StringBuilder();
            if (obj == null) {
                json.append("\"\"");
            } else if (obj instanceof String || obj instanceof Integer || obj instanceof Float || obj instanceof Boolean
                    || obj instanceof Short || obj instanceof Double || obj instanceof Long || obj instanceof BigDecimal
                    || obj instanceof BigInteger || obj instanceof Byte) {
                json.append("\"").append(string2json(obj.toString())).append("\"");
            } else if (obj instanceof Object[]) {
                json.append(array2json((Object[]) obj));
            } else if (obj instanceof List) {
                json.append(list2json((List<?>) obj));
            } else if (obj instanceof Map) {
                json.append(map2json((Map<?, ?>) obj));
            } else if (obj instanceof Set) {
                json.append(set2json((Set<?>) obj));
            } else {
                json.append(bean2json(obj));
            }
            return json.toString();
        }
        /**
         * @param bean bean对象
         * @return String
         */
        public static String bean2json(Object bean) {
            StringBuilder json = new StringBuilder();
            json.append("{");
            PropertyDescriptor[] props = null;
            try {
                props = Introspector.getBeanInfo(bean.getClass(), Object.class).getPropertyDescriptors();
            } catch (IntrospectionException e) {
            }
            if (props != null) {
                for (int i = 0; i < props.length; i++) {
                    try {
                        String name = object2json(props[i].getName());
                        String value = object2json(props[i].getReadMethod().invoke(bean));
                        json.append(name);
                        json.append(":");
                        json.append(value);
                        json.append(",");
                    } catch (Exception e) {
                    }
                }
                json.setCharAt(json.length() - 1, '}');
            } else {
                json.append("}");
            }
            return json.toString();
        }
        /**
         * @param list list对象
         * @return String
         */
        public static String list2json(List<?> list) {
            StringBuilder json = new StringBuilder();
            json.append("[");
            if (list != null && list.size() > 0) {
                for (Object obj : list) {
                    json.append(object2json(obj));
                    json.append(",");
                }
                json.setCharAt(json.length() - 1, ']');
            } else {
                json.append("]");
            }
            return json.toString();
        }
        /**
         * @param array 对象数组
         * @return String
         */
        public static String array2json(Object[] array) {
            StringBuilder json = new StringBuilder();
            json.append("[");
            if (array != null && array.length > 0) {
                for (Object obj : array) {
                    json.append(object2json(obj));
                    json.append(",");
                }
                json.setCharAt(json.length() - 1, ']');
            } else {
                json.append("]");
            }
            return json.toString();
        }
        /**
         * @param map map对象
         * @return String
         */
        public static String map2json(Map<?, ?> map) {
            StringBuilder json = new StringBuilder();
            json.append("{");
            if (map != null && map.size() > 0) {
                for (Object key : map.keySet()) {
                    json.append(object2json(key));
                    json.append(":");
                    json.append(object2json(map.get(key)));
                    json.append(",");
                }
                json.setCharAt(json.length() - 1, '}');
            } else {
                json.append("}");
            }
            return json.toString();
        }
        /**
         * @param set 集合对象
         * @return String
         */
        public static String set2json(Set<?> set) {
            StringBuilder json = new StringBuilder();
            json.append("[");
            if (set != null && set.size() > 0) {
                for (Object obj : set) {
                    json.append(object2json(obj));
                    json.append(",");
                }
                json.setCharAt(json.length() - 1, ']');
            } else {
                json.append("]");
            }
            return json.toString();
        }
        /**
         * @param s 参数
         * @return String
         */
        public static String string2json(String s) {
            if (s == null)
                return "";
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < s.length(); i++) {
                char ch = s.charAt(i);
                switch (ch) {
                case '"':
                    sb.append("\\\"");
                    break;
                case '\\':
                    sb.append("\\\\");
                    break;
                case '\b':
                    sb.append("\\b");
                    break;
                case '\f':
                    sb.append("\\f");
                    break;
                case '\n':
                    sb.append("\\n");
                    break;
                case '\r':
                    sb.append("\\r");
                    break;
                case '\t':
                    sb.append("\\t");
                    break;
                case '/':
                    sb.append("\\/");
                    break;
                default:
                    if (ch >= '\u0000' && ch <= '\u001F') {
                        String ss = Integer.toHexString(ch);
                        sb.append("\\u");
                        for (int k = 0; k < 4 - ss.length(); k++) {
                            sb.append('0');
                        }
                        sb.append(ss.toUpperCase());
                    } else {
                        sb.append(ch);
                    }
                }
            }
            return sb.toString();
        }
    }
 文章出自:http://blog.csdn.net/Alibert/archive/2008/08/31/2855114.aspx
分享到:
评论

相关推荐

    Json反序列化

    反序列化是将JSON格式的字符串转换为程序可直接使用的对象的过程,这对于处理网络请求返回的数据至关重要。在本篇文章中,我们将深入探讨JSON反序列化的概念、原因以及在实际开发中的应用。 一、什么是JSON反序列化...

    C++ JSON 序列化与反序列化

    2. 错误处理:在序列化和反序列化过程中,应检查可能的错误,例如无效的JSON格式、字段缺失等,并妥善处理。 3. 性能优化:在处理大量数据时,可以考虑使用流式API或批量操作来提高效率。 4. JSON格式控制:某些库...

    关于XML、JSON的序列化、发序列化对象或集合

    "关于XML、JSON的序列化、反序列化对象或集合" XML和JSON是当前最广泛使用的数据交换格式,它们的序列化和反序列化是软件开发中的常见需求。本文将详细介绍XML和JSON的序列化和反序列化对象或集合的实现方法。 XML...

    delphi_JSON序列化反序列化

    序列化是将数据结构或对象转换为可传输或存储的格式的过程。在Delphi中,我们可以使用TJSONObject和TJSONValue类将Delphi的对象或记录转换为JSON字符串。以下是一个简单的示例: ```delphi uses System.JSON; ...

    Vbs序列化/反序列化Json基类

    Vbs序列化/反序列化Json基类 可直接使用,bug已被我修复 Example: Dim fso, json, str, o, i Set json = New VbsJson Set fso = WScript.CreateObject("Scripting.Filesystemobject") str = fso.OpenTextFile&#40;...

    json数据序列化和反序列化

    2. 数据序列化:序列化是将对象转换为可传输或存储的格式,对于JSON,这意味着将JavaScript对象转换为JSON字符串。在JavaScript中,我们可以使用`JSON.stringify()`方法实现这一过程。例如: ```javascript let obj ...

    ASPNET中JSON的序列化和反序列化的方法

    字符串是用双引号包围的Unicode字符集合,而日期时间在JSON中通常会被序列化成特殊的格式,比如“/Date(700000+0500)/”。 ***提供了多种机制来实现JSON的序列化和反序列化。最基本的是使用`...

    Json格式序列化和反序列化处理

    在C#中,处理JSON格式的序列化和反序列化是开发过程中的常见任务,这涉及到将C#对象转换为JSON字符串,以及将JSON字符串还原为C#对象。本文将详细介绍C#中几种常用的JSON处理方法。 一、Newtonsoft.Json库(Json...

    json反序列化

    在C#编程中,反序列化是将JSON字符串转换为等效的C#对象的过程,这对于处理从服务器接收到的数据或者保存在文件中的JSON格式数据非常有用。 在C#中,我们可以使用多种库进行JSON反序列化,其中最流行的是 ...

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

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

    .net 序列化和反序列化 Json

    1. 序列化对象到JSON字符串: ```csharp using System.Json; // 定义一个简单的对象 public class Person { public string Name { get; set; } public int Age { get; set; } } // 创建一个Person实例 Person ...

    C# 序列化简易源代码(初学者必看)

    `JsonSerializer`通常是基于JSON.NET库(现在已被.NET Core和.NET Framework集成),它提供了一种高效、简洁的方式来序列化和反序列化对象为JSON格式,JSON广泛用于Web服务和API之间的数据传递。 压缩包中的...

    C# 后台序列化Json序列、反序列化Json序列(三种方法)

    Json.NET是最常用且功能强大的JSON库,提供了丰富的API用于序列化和反序列化对象。序列化是将对象转换为JSON字符串的过程,而反序列化则是将JSON字符串转换回对象。 - **序列化**: 使用`JsonConvert....

    Json序列化与反序列化

    序列化是将数据对象转化为JSON格式的过程,以便在网络上传输或保存到文件中。不同的编程语言提供了不同的库来支持JSON序列化。例如,在Python中,可以使用`json`模块的`dumps()`函数来实现: ```python import json...

    C#中二进制数组转换,二进制序列化和json序列化方法

    JSON序列化的优势在于其可读性,并且许多现代Web服务都支持JSON格式。然而,二进制序列化通常更节省空间和时间,但不那么直观。 总结,理解并熟练运用C#中的二进制数组转换和序列化技术对于提升开发效率和代码质量...

    JSON工具,JS中JSON对象的序列化与反序列化

    比如下面的JS对象 var user=new Object(); user.name='吕洞宾'; user.friends=[{name:"铁拐李",sex:"男",friend:user},{name:"何仙姑",sex:"女",friend:user}]; 一般的解析工具都会出错 详细信息请参观 ...

    json序列化notepad++

    序列化是指将JSON对象转换为字符串的过程,以便在网络上传输或保存到文件中;反序列化则是将JSON字符串转换回对象的过程。 描述中提到的“亲测可使用notepad++ json格式化插件”,意味着已经有人验证过在Notepad++...

    测试JSON格式的正反序列化

    C#作为.NET框架的一部分,提供了内置支持JSON序列化和反序列化的工具,使得对象和JSON字符串之间的转换变得简单易行。在本项目中,我们将深入探讨如何使用C#进行JSON的正反序列化。 在C#中,`System.Text.Json`命名...

    JSON序列化反序列化带List

    在Delphi编程环境中,处理JSON数据通常涉及到序列化和反序列化操作,即将对象转换为JSON字符串,以及将JSON字符串解析回对象。本文将深入探讨如何在Delphi中进行JSON序列化与反序列化,特别是涉及List类型的数据。 ...

    Json序列化与反序列化详解

    1. JSON序列化:序列化是指将Java对象转换为JSON字符串的过程,使得数据可以被存储或通过网络传输。这样做的好处是,JSON格式的数据可以在多种语言之间进行互操作,并且易于理解和处理。 2. JSON反序列化:反序列化...

Global site tag (gtag.js) - Google Analytics