一. 说明

com.alibaba.fastjson.JSONObject是经常会用到的JSON工具包,同样它的转换方法也会经常被我们使用,包括对象转成JSON串,JSON串转成java对象等,如果过一段时间不用的话很容易就会忘记,所以将使用方法总结如下,以便以后忘记了方便查询

//Java对象转换成String类型的JSON字符串
JSONObject.toJSONString(Java对象)
 
//String类型的JSON字符串转换成Java对象
JSONObject.toJavaObject(JSON字符串,Java对象.class)
 
//Json字符串转换成JSONObject对象
JSONObject.parseObject(JSON字符串)
 
//JSON字符串转换成Java对象
JSONObject.parseObject(JSON字符串,Java对象.class)

下面是对于JSON的详细介绍。



二. JSON

JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互。

1. 创建JSON对象

用put(key, value)拼接json

JSONObject object = new JSONObject();
jsonObjectRow.put("YWH", projId);
jsonObjectRow.put("YWX", "2010");
jsonObjectRow.put("JGXYH", jsonObject.getString("ZJYH"));

2. 创建JSON数组

用add添加json对象(可以看做是多个JSON对象的集合):

JSONArray jsonArrayRow = new JSONArray();
jsonArrayRow.add(object);

3. JSON.parseObject(String text)与JSONObject.parseObject(String text)

parseObject翻译:解析对象。(将String字符串解析成对象)

JSONObject是JSON的子类。

JSON是一个抽象类,JSON中有一个静态方法parseObject(String text),将text解析为一个JSONObject对象并返回

JSONObject是一个继承自JSON的类,当调用JSONObject.parseObject(result)时,会直接调用父类的parseObject(String text)

所以两者没什么区别,一个是用父类去调用父类自己的静态的parseObject(String text),一个是用子类去调用父类的静态parseObject(String text),两者调的是同一个方法。


4 JSON转换成Java数据(包含Java对象)

4.1 将json对象转换为java对象

Person jb = (Person)JSONObject.toBean(obj,Person.class);//将建json对象转换为Person对象

4.2 JSON对象转化为List对象

使用JSON.parseArray()

这个方法的作用就是将json格式的数据转换成数组格式。

假设有Person这个类,有json类型数据

jsonStr = 
[
    {
        "name":"张三",
        "age":"1"
    },
    {
        "name":"李四",
        "age":"4"
    }
]

那么 List lists = json.parseArray(jsonStr, Person.class); 中,lists就可以接收jsonStr了


5. Java数据(包括对象)转换成JSON

JSONObject jo = JSONObject.fromObject(map);将参数解析成JSONObject对象

它在对Object转换的时候是按照domain类中的所有getXXX()方法进行转换的。如果你在类中写了非属性的getXXX()方法,那么返回给你的就会有XXX属性了。

1. List集合转换成json代码
 
List list = new ArrayList();
 
list.add( "first" );
 
list.add( "second" );
 
JSONArray jsonArray2 = JSONArray.fromObject( list );
 
2. Map集合转换成json代码
 
Map map = new HashMap();
 
map.put("name", "json");
 
map.put("bool", Boolean.TRUE);
 
map.put("int", new Integer(1));
 
map.put("arr", new String[] { "a", "b" });
 
map.put("func", "function(i){ return this.arr[i]; }");
 
JSONObject json = JSONObject.fromObject(map);
 
3. Bean转换成json代码
 
JSONObject jsonObject = JSONObject.fromObject(new JsonBean());
 
4. 数组转换成json代码
 
boolean[] boolArray = new boolean[] { true, false, true };
 
JSONArray jsonArray1 = JSONArray.fromObject(boolArray);
 
 
5. 一般数据转换成json代码
 
JSONArray jsonArray3 = JSONArray.fromObject("['json','is','easy']" );

6. Java对象转换成JSON代码

JSONObject json = JSONObject.fromObject(obj);//将java对象转换为json对象