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

对象转换成JSON字符串的方法

    博客分类:
  • JAVA
阅读更多
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;

/**
* 提供将对象转换成JSON字符串的方法
* 
* @author Bom Wu
* @create Mar 13, 2009
*/
public class JSON {
        /**
         * 将一个对象转换成JSON字符串表示,该对象应该符合 JavaBean规范。
         * 如果对象的某个属性不是数字或字符串,该属性将被忽略,不会出现在JSON字符串中
         * 
         * @param obj
         *            要转换的对象
         * @return 描述该对象的JSON字符串,包括属性名与属性值
         */
        public static String toJSON(Object obj) {
                HashMap<String, String> map = new HashMap<String, String>();
                Class c = obj.getClass();
                Field[] fields = c.getDeclaredFields();
                for (int i = 0; i < fields.length; i++) {
                        String name = fields[i].getName();
                        try {
                                fields[i].setAccessible(true);
                                Object o = fields[i].get(obj);
                                if (o instanceof Number) {
                                        map.put("\"" + name + "\"", o.toString());
                                } else if (o instanceof String) {
                                        map.put("\"" + name + "\"", "\"" + o.toString() + "\"");
                                }
                        } catch (IllegalArgumentException e) {
                        } catch (IllegalAccessException e) {
                        }
                }
                String s = map.toString();
                String str = s.replaceAll("\"=", "\":");
                return str;
        }

        /**
         * 将一个对象数组转换成JSON字符串
         * 
         * @param objs
         *            要转换的对象数组
         * @return 转换后得到的字符串
         */
        public static String toJSON(Object[] objs) {
                String[] strs = new String[objs.length];
                for (int i = 0; i < objs.length; i++) {
                        strs[i] = toJSON(objs[i]);
                }
                return toJSONArray(strs);
        }

        /**
         * 将多个JSON字符串转换成一个JSON字符串,并加入一个标识长度的属性length
         * 
         * @param strs
         *            要转换的多个JSON字符串
         * @return 完整的一个JSON字符串
         */
        public static String toJSONArray(String[] strs) {
                StringBuffer sb = new StringBuffer();
                sb.append("{");
                for (int i = 0; i < strs.length; i++) {
                        sb.append("\"");
                        sb.append(i);
                        sb.append("\":");
                        sb.append(strs[i]);
                        sb.append(",");
                }
                sb.append("\"length\":");
                sb.append(strs.length);
                sb.append("}");
                return sb.toString();
        }

        /**
         * 测试
         * 
         * @param args
         */
        @SuppressWarnings("unchecked")
        public static void main(String[] args) {
                User user = new User();
                user.setId("1234");
                user.setName("hahaha");
                user.setAge(21);

                User user1 = new User();
                user1.setId("5767");
                user1.setName("hehehe");
                user1.setAge(18);

                ArrayList list = new ArrayList();
                list.add(user);
                list.add(user1);
                // System.out.println(JSON.toJSON(user));
                System.out.println(JSON.toJSON(list.toArray()));
        }
}

/**
* 用来测试的类
* 
* @author Bom Wu
* @create Mar 13, 2009
*/
class User {
        private String name;
        private String id;
        private int age;
        public int getAge() {
                return age;
        }
        public void setAge(int age) {
                this.age = age;
        }
        public String getId() {
                return id;
        }
        public void setId(String id) {
                this.id = id;
        }
        public String getName() {
                return name;
        }
        public void setName(String name) {
                this.name = name;
        }
}

 http://bbs.tarena.com.cn/viewthread.php?tid=192155

分享到:
评论
1 楼 walle1027 2010-12-28  
 Field[] fields = c.getDeclaredFields(); 

这行代码不能取到继承的父类的属性,有bug,
  if (o instanceof Number) {  
       map.put("\"" + name +"\"",o.toString());  
  } else if (o instanceof String) {  
       map.put("\"" + name + "\"", "\"" + o.toString() + "\"");  
  } 

这里没有考虑,时间类型的属性,并且没有考虑对象的属性是自定义对象或者自定义序列的情况,所以都有bug。

相关推荐

    使用json-lib将java对象转换成json字符串

    标题中的“使用json-lib将java对象转换成json字符串”指的是在Java编程中,利用json-lib这个库来将Java对象转化为JSON格式的字符串。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于前后端...

    java对象转换为json字符串或字符串数组

    使用`org.json`库将`Person`对象转换为JSON字符串的方法如下: ```java import org.json.JSONObject; JSONObject jsonObject = new JSONObject(person); String jsonString = jsonObject.toString(); System....

    由php对象生成json字符串 把php对象变成json字符串.zip

    总的来说,将PHP对象转换为JSON字符串是通过json_encode()函数完成的,对于对象,可以考虑实现JsonSerializable接口或使用特定选项来控制序列化行为。在实际开发中,还要注意错误处理和编码选项的设置,以确保数据...

    Json对象与json字符串互相转换处理工具

    Json对象与json字符串互相转换处理工具

    提供将对象转换成JSON字符串的方法 (2).pdf

    标题中的“提供将对象转换成JSON字符串的方法 (2).pdf”指的是一个关于如何在Java编程中将对象转换为JSON格式的文档。描述中提到的是这个文档的更新日期和作者信息。标签“互联网”可能暗示了这个方法在Web开发或者...

    将web Form 的数据转化成json字符串(带使用举例)

    * 将web Form 的数据转化成json字符串的函数 * howwa@sina.com 根据网上搜的资料修改而成 * 2011-5-14 * 将web Form 采集的数据转化成json字符串 * 传入web form对象 * 输出由form元素名称及其值组成的json字符串 *...

    模仿json,根据对象生成json字符串,根据字符串生成对象

    以`com.google.gson`为例,我们需要创建一个`Gson`实例,然后调用`toJson()`方法将Java对象转换为JSON字符串。例如,我们有一个名为`Person`的类,包含`name`和`age`属性,可以这样做: ```java import ...

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

    当需要将C++对象转换回JSON字符串时,可以使用`json`对象的`dump`方法: ```cpp std::string jsonStr = j.dump(); // 序列化为字符串 ``` 6. **注意事项**: - 检查JSON解析时的异常:`json::parse`会抛出异常...

    json2.js 字符串转转json对象工具

    2. `JSON.stringify()`方法则相反,它将JavaScript对象转换为JSON字符串。这对于需要将数据发送到服务器或者存储在本地(如localStorage)时非常有用。例如,`JSON.stringify({name: "John", age: 30})`会返回字符串...

    把对象转换为JSON字符串

    一个把对象转换为JSON字符串 把该DLL引入项目中就能使用了

    Java中Json字符串直接转换为对象的方法(包括多层List集合)

    本文将详细介绍如何将JSON字符串直接转换为Java对象,特别是涉及到多层List集合的情况。在本例中,我们将使用`net.sf.json.JSONObject`类来实现这一功能。 首先,确保你的项目中已经引入了必要的库。在使用`...

    C# json格式解析,Json格式字符串与C#对象相互转换,类库+使用案例,注释详细

    /// 将Json字符串解析为C#中的对象 /// Json格式中的字符串值识别 /// 将Json字符串解析为Dictionary, dynamic&gt;对象。 /// 将Json字符串解析为dynamic[]对象。 /// Dictionary类型对象转换为Json格式字符串 /// C#...

    GSON包,JAVA对象和LIST转换成JSON字符串

    创建一个 Gson对象在调用其toJson方法将JAVA对象或集合转换成json字符串 Gson gson = new Gson(); String toJson = gson.toJson(Object o);

    json字符串转换插件

    通过这种方式,你可以使用`JsonUtils.jsonToJavaObject()`方法将JSON字符串转换为任意指定类型的Java对象,而`JsonUtils.javaObjectToJson()`则将Java对象转换为JSON字符串。 总之,JSON字符串转换插件是Java开发中...

    将json字符串转换为对象

    标题提到的“将json字符串转换为对象”,实际上是在指JSON.parse()方法,这个方法在JavaScript中用于将一个合法的JSON字符串转化为JavaScript对象。例如,我们有一个如下的JSON字符串: ```json let jsonString = '...

    解析Json字符串直接转换为对象(包括多层List集合 嵌套)所用jar包

    在上述代码中,`readValue`方法用于将JSON字符串转换为指定的Java类型。通过这种方式,我们可以轻松地处理复杂的JSON结构,包括多层嵌套和List集合。 此外,Jackson库还提供了其他功能,如反序列化配置、类型转换、...

    将string类型xml字符串转为json字符串

    总结来说,将string类型的XML字符串转换为JSON字符串是通过解析XML字符串并构建相应的JSON对象来完成的。这个过程通常需要借助特定的库,如Java中的`org.json`。理解XML和JSON的结构差异,以及如何利用这些库进行...

    Pbjson字符串生成与解析

    Pbjson的工作原理是:当需要将protobuf对象转换为Json字符串时,它会遍历protobuf消息的字段,将每个字段的值转换为Json格式,并构建出对应的Json字符串。反向操作,解析Json字符串到protobuf对象时,Pbjson会解析...

    java转json串的几种方法

    以下我们将详细探讨Java中将对象转换为JSON字符串的三种方法,这里使用的是阿里巴巴的Fastjson库,它是一个高性能的JSON库,提供了丰富的API来处理JSON与Java对象之间的转换。 1. **将Java对象转成JSON串** 当我们...

Global site tag (gtag.js) - Google Analytics