`
yxgyh
  • 浏览: 275649 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

任意对象转化为JSON

    博客分类:
  • JAVA
阅读更多
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();
        }
    }

 

分享到:
评论

相关推荐

    json字符串转换c++类对象

    这里我们以nlohmann/json为例,它是一个轻量级且功能强大的JSON库,支持C++11及以上版本。 2. JSON对象与C++对象映射:在C++中,我们首先需要定义一个类,其成员变量对应于JSON对象的键值对。例如,如果JSON字符串...

    Unity3D中任意类型数据转换成json数据的方法2

    此外,文章中还提供了一个 `ToJson` 方法,用于将单个对象转换为JSON字符串。这个方法同样依赖于反射,获取对象的所有属性并进行转换。对于DateTime、Guid、TimeSpan等特殊类型,它们会被转换为包含引号的字符串。...

    IOS 将字典和数组转化为JSON数据

    `NSArray`用于存储有序的元素集合,而`NSDictionary`则用于存储键值对,它的键必须是不可变对象,而值可以是任意对象。 在iOS中,我们可以使用Foundation框架提供的`NSJSONSerialization`类来处理JSON数据。这个类...

    总结java的算法之3

    3. **对象转JSON**:`任意对象转化为JSON .java` 文件可能涉及到了序列化和反序列化技术。Java的`com.google.gson`库或者`org.json`库可以将Java对象转化为JSON格式,便于数据交换或存储。 4. **日期方法**:`一组...

    JSON对象互转案例fastjson

    它支持各种复杂的Java类型,包括自定义类、泛型、枚举等,并且提供了丰富的API来处理JSON数据,比如`parseObject()`用于将JSON字符串解析为单个Java对象,`parse()`用于解析任意的JSON数据等。 在实际开发中,除了`...

    自己实现的Android中将任意实体类(Entity、vo、dto、Model)对象(object)转为Json字符串的一个类

    // 将任意对象转换为Json字符串 public static String objectToJson(Object obj) { return gson.toJson(obj); } // 将Json字符串反序列化为指定类型的对象 public static &lt;T&gt; T jsonToObject(String json, ...

    C#中任意类型数据转成JSON格式

    在C#编程中,将任意类型的数据转换成JSON(JavaScript Object Notation)格式是一种...这些转换方法对于Web服务、API开发以及前后端数据交互至关重要,能够方便地将C#对象转化为JSON格式,以便于网络传输和数据交换。

    json一键转换为易语言自定义数据类型1

    为此,我们需要一种自动化转换算法,将 JSON 对象转换为易语言的自定义数据类型。 **2. 生成算法简介** 算法的核心是通过 JavaScript 来读取和解析 JSON 数据,然后利用易语言的语法生成对应的自定义数据类型代码...

    Datatable和json互相转化代码

    - **MaxJsonLength**: 由于默认情况下,`JavaScriptSerializer`处理的JSON字符串长度有限制,这里将其设置为`Int32.MaxValue`,以确保可以处理任意长度的JSON字符串。 - **ArrayList**: 使用`ArrayList`来存储每行...

    org.json的包

    例如,你有一个Java对象,可以通过`JSONObject`的构造函数将对象转化为JSON,然后调用`toString()`方法得到JSON字符串。 2. **反序列化**:将JSON字符串转换为Java对象。可以使用`JSONObject`的`getJSONObject()`或...

    json解析和封装案例

    3. 封装JSON:使用`JSON.stringify()`函数将JavaScript对象转化为JSON字符串。 4. 错误处理:处理解析和封装时可能遇到的错误,如无效的JSON格式等。 5. 应用场景:通过实例展示JSON在Ajax请求、存储本地数据等方面...

    JSON与java用到的对象包

    2. **JSONArray**: 表示一个JSON数组,可以包含任意数量的JSON对象或值。和JSONObject类似,可以通过`put()`方法添加元素: ```java JSONArray arr = new JSONArray(); arr.put(new JSONObject().put("id", 1)....

    json字符串递归解析

    通过自定义递归函数,我们可以有效地解析任意层次的嵌套JSON,将其转化为JavaScript对象,从而方便我们在程序中进行进一步的处理和操作。在实际编程中,理解并熟练掌握这一技巧,对于提升开发效率和代码质量有着重要...

    JSON的基本用法

    - 将Java对象转换为JSON字符串:通过`Gson().toJson(object)`方法,我们可以轻松地将Java对象转化为JSON字符串。 - 将JSON字符串反序列化为Java对象:`Gson().fromJson(jsonString, Class)`方法可以将JSON字符串...

    json.org.jar

    3. JSON字符串与Java对象的转换:`org.json`库提供了将Java对象转化为JSON字符串以及将JSON字符串解析为Java对象的方法。例如,`JSONObject.toString()`可以将JSONObject转化为字符串,而`new JSONObject(String str...

    json格式转换包

    - JSON数据的解析:读取JSON格式的文件或字符串,并将其转化为Java对象。 - JSON数据的生成:从Java对象生成JSON格式的字符串或文件。 - 数据转换:可能提供了将特定数据结构(如CSV、XML)转换为JSON的功能。 - ...

    JSON 入门指南

    在JSON上下文中,序列化是将JavaScript对象转化为JSON字符串,反序列化是从JSON字符串创建JavaScript对象。JSON序列化和反序列化的高效性使得它在Web应用中成为了XML的有力替代。 总之,JSON作为数据交换格式,因其...

    JSON整合包

    例如,JavaScript有内置的JSON对象,Python有json模块,Java有org.json或com.google.gson等库,这些库提供了将JSON字符串转化为对象和将对象转化为JSON字符串的功能。 4. 解析过程:解析JSON通常包括两个步骤:字符...

    org.json最新版本jar包(2017.10.18)

    实现此接口的类可以调用`toJSONString()`方法将其对象转化为JSON字符串。 4. **JSONTokener**:用于解析JSON文本,将其分解为一个个JSON组件。它可以从各种输入源(如字符串、InputStream或Reader)读取数据,并...

    Json使用例子

    `JSON.parse()` 方法用于将JSON字符串转化为JavaScript对象,而 `JSON.stringify()` 方法则用于将JavaScript对象转化为JSON字符串。 4. **JSON编码与解码**: 当需要在网络间传输JSON数据时,通常会将其编码为字符...

Global site tag (gtag.js) - Google Analytics