fastjson(转)

Posted 一弦一仙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了fastjson(转)相关的知识,希望对你有一定的参考价值。

博客地址 : http://blog.csdn.NET/shulianghan/article/details/41011605

 

fastjson 源码地址 : 

-- GitHub : https://github.com/alibaba/fastjson ;

-- 示例源码 : https://github.com/alibaba/fastjson/wiki/Samples-DataBind ;

-- Jar下载 : http://sourceforge.net/projects/fastjson/ ;

 

 

总结 : 

 

Java Bean <--> json 字符串 <--> JSONObject 互相转化

 

json 字符串 与 java Bean 对象 互相转化 : 

-- json 字符串 -> Java Bean 对象 : JSON.parseObject(String text, Class<Student> clazz) 方法, 示例 - Student student = JSON.parseObject(json_student, Student.class);

-- Java Bean 对象 -> json 字符串 : JSON.toJSONString(Object object, boolean prettyFormat) 方法, 示例 - String format_json = JSON.toJSONString(student, true);

 

Java Bean 对象 与 JSONObject 对象 互相转化 : 

-- Java Bean 对象 -> JSONObject 对象 : JSON.toJSON(Object javaObject) 方法, 示例 - JSONObject object = (JSONObject) JSON.toJSON(student_s)

-- JSONObject 对象 -> Java Bean 对象 (无直接方法实现) : JSON.parseObject(jsonObject.toString(), Class<T> clazz) 方法, 先转成字符串, 再转成 Java Bean;

 

json 字符串 与 JSONObject 对象互相转化 : 

-- json 字符串 -> JSONObject 对象 : JSON.parseObject(String text) 方法, 示例 - JSONObject object = JSON.parseObject(json_student);

-- JSONObject 对象 -> json 字符串 : JSONObject.toString() 方法, 示例 - object.toString();

 

 

Java Bean 对象 <--> json 字符串 <--> JSONArray 对象 互相转化

 

json 字符串 与 Java 集合 互相转化 : 

-- json 字符串 -> Java 集合 : JSON.parseObject(String text, Class<Student> clazz) 方法, 示例 - List<Student> students = JSON.parseArray(json_array, Student.class);

-- Java 集合 -> json 字符串 : toJSONString(Object object, boolean prettyFormat) 方法, 示例 - String json_array = JSON.toJSONString(students, true);

 

Java 集合 与 JSONArray 对象 互相转化 : 

-- Java 集合 -> JSONArray 对象 : JSON.toJSON(Object javaObject) 方法, 示例 - JSONArray array = (JSONArray) JSON.toJSON(students);

-- JSONArray 对象 -> Java 集合 (没有直接转化方法) : 先转成 json 字符串, 再转成 Java 集合;

 

json 字符串 与 JSONArray 对象 互相转化 

-- json 字符串 -> JSONArray 对象 : JSON.parseArray(String text) 方法, 示例 - JSONArray array = JSON.parseArray(json_array);

-- JSONArray 对象 -> json 字符串 : jsonArray.toString() 方法;

 

 

 

一. JSON 简介

 

 

1. JSON 结构

 

 

(1) 对象

 

对象简介 : 

-- 格式 : 对象定义在 大括号 {} 中, 中间的项由 逗号 隔开, 每个项目都是 key : value  进行的;

-- 示例 : {"age":42,"id":1,"male":true,"name":"Sherlock Holmes","schoolId":1};

-- 格式化后的 : 

 

[plain] view plain copy
 
  1. {  
  2.     "age":42,  
  3.     "id":1,  
  4.     "male":true,  
  5.     "name":"Sherlock Holmes",  
  6.     "schoolId":1  
  7. }  



 

 

(2) 数组

 

数组简介 : 

-- 数组格式 : 数组放在 中括号[] 中, 在 [] 中有 n 个 {} 元素, 每个元素用 逗号 隔开;

-- 数组示例 : [{"age":42,"id":1,"male":true,"name":"Sherlock Holmes","schoolId":1},{"age":42,"id":2,"male":false,"name":"John Watson","schoolId":1}] ;

-- 输出格式化后的数组 : 

 

[plain] view plain copy
 
  1. [  
  2.     {  
  3.         "age":42,  
  4.         "id":1,  
  5.         "male":true,  
  6.         "name":"Sherlock Holmes",  
  7.         "schoolId":1  
  8.     },  
  9.     {  
  10.         "age":42,  
  11.         "id":2,  
  12.         "male":false,  
  13.         "name":"John Watson",  
  14.         "schoolId":1  
  15.     }  
  16. ]  

 

 

 

 

二. JSON 相关用法

 

 

1. JSON.toJSONString 方法

 

 

(1) JSON.toJSONString(Object object)方法简介

 

JSON.toJSONString(Object object)方法简介 : 

-- 方法定义 : public static final String toJSONString(Object object) ;

-- 方法作用 : 将 java bean 转为 json 字符串;

-- 方法位置 : String com.alibaba.fastjson.JSON.toJSONString(Object object) ;

-- 参数介绍 : Object object -> 要转换的实体类对象;

 

JSON.toJSONString(Object object, boolean prettyFormat)方法简介 

-- 方法定义 : public static final String toJSONString(Object object, boolean prettyFormat) ;

-- 方法作用 : 将 java bean 转为 json 字符串, 并将 json 字符串格式化;

-- 方法位置 String com.alibaba.fastjson.JSON.toJSONString(Object object, boolean prettyFormat) ;

-- 参数介绍 : Object object -> 要转换的实体类对象, boolean prettyFormat -> 是否将 json 字符串格式化 如果 false 与 上面的方法作用相同;

 

(2) JSON.toJSONString(Object object) 和 JSON.toJSONString(Object object, boolean prettyFormat)方法使用示例

 

JavaBean 类定义 

 

[java] view plain copy
 
  1. package cn.org.octopus.fastjson.beans;  
  2.   
  3. public class Student {  
  4.   
  5.     private int id;  
  6.     private String name;  
  7.     private int age;  
  8.     private boolean isMale;  
  9.     private int schoolId;  
  10.       
  11.     public Student() {  
  12.         super();  
  13.     }  
  14.       
  15.     public Student(int id, String name, int age, boolean isMale, int schoolId) {  
  16.         super();  
  17.         this.id = id;  
  18.         this.name = name;  
  19.         this.age = age;  
  20.         this.isMale = isMale;  
  21.         this.schoolId = schoolId;  
  22.     }  
  23.   
  24.     public int getId() {  
  25.         return id;  
  26.     }  
  27.   
  28.     public void setId(int id) {  
  29.         this.id = id;  
  30.     }  
  31.   
  32.     public String getName() {  
  33.         return name;  
  34.     }  
  35.   
  36.     public void setName(String name) {  
  37.         this.name = name;  
  38.     }  
  39.   
  40.     public int getAge() {  
  41.         return age;  
  42.     }  
  43.   
  44.     public void setAge(int age) {  
  45.         this.age = age;  
  46.     }  
  47.   
  48.     public boolean isMale() {  
  49.         return isMale;  
  50.     }  
  51.   
  52.     public void setMale(boolean isMale) {  
  53.         this.isMale = isMale;  
  54.     }  
  55.   
  56.     public int getSchoolId() {  
  57.         return schoolId;  
  58.     }  
  59.   
  60.     public void setSchoolId(int schoolId) {  
  61.         this.schoolId = schoolId;  
  62.     }  
  63.   
  64.     @Override  
  65.     public String toString() {  
  66.         return "Student [id=" + id + ", name=" + name + ", age=" + age  
  67.                 + ", isMale=" + isMale + ", schoolId=" + schoolId + "]";  
  68.     }  
  69. }  

 

 

main 函数代码 : 

 

[java] view plain copy
 
  1. public static void main(String[] args) {  
  2.       
  3.     //创建一个 Student 对象  
  4.     Student student = new Student(1, "Sherlock Holmes", 42, true, 1);   
  5.     //将 Student 对象转为 json 字符串  
  6.     String json = JSON.toJSONString(student);  
  7.     //打印 json 字符串  
  8.     System.out.println(json);  
  9.       
  10.     //将 Student 对象转为 json 字符串, 这个字符串是经过格式化的  
  11.     String format_json = JSON.toJSONString(student, true);  
  12.     //打印格式化的 json  
  13.     System.out.println(format_json);  
  14.               
  15. }  


执行结果 : 

 

-- 第一个结果 : 该结果没有经过格式化, 只是将 json 字符串输出;

-- 第二个结果 : 该结果按照 json 的格式进行格式化了;

 

[plain] view plain copy
 
  1. {"age":42,"id":1,"male":true,"name":"Sherlock Holmes","schoolId":1}  
  2. {  
  3.     "age":42,  
  4.     "id":1,  
  5.     "male":true,  
  6.     "name":"Sherlock Holmes",  
  7.     "schoolId":1  
  8. }  



 

 

2. JSON.toJSON 方法

 

 

(1) JSON.toJSON(Object javaObject) 方法简介

 

方法简介 : 

-- 方法定义 : public static final Object toJSON(Object javaObject) ;

-- 方法作用 : 将 java bean 对象转为 JSONObject 对象, 或者将 集合 转为 JSONArray 对象;

-- 方法位置 Object com.alibaba.fastjson.JSON.toJSON(Object javaObject) ;

-- 参数介绍 : Object javaObject -> java bean 对象 或者 集合;

 

关键代码解析 : 

-- Java Bean 转 JSONObject : JSONObject object = (JSONObject) JSON.toJSON(student_s)

-- Java 集合 转 JSONArray JSONArray array = (JSONArray) JSON.toJSON(students)

 

JSONOject 和 JSONArray 打印 : 这两种对象 打印本身, toString() 以及 toJSONString() 都是相同的结果, 详见下面的示例;

 

 

(2) 示例

 

Student 实体类 : 在 一. 1. (2) 中有定义, 直接使用该实体类即可;

 

Main() 示例 : 

 

[java] view plain copy
 
  1. public class Main {  
  2.   
  3.     //该字符串是 {"age":42,"id":1,"male":true,"name":"Sherlock Holmes","schoolId":1} 注意将 " 转为 \"  
  4.     public static final String json_student =  "{\"age\":42,\"id\":1,\"male\":true,\"name\":\"Sherlock Holmes\",\"schoolId\":1}";  
  5.       
  6.     public static void main(String[] args) {  
  7.           
  8.         //创建一个 Student 对象  
  9.         Student student_s = new Student(1, "Sherlock Holmes", 42, true, 1);   
  10.         //将 java bean 对象转为 JSONObject 对象  
  11.         JSONObject object = (JSONObject) JSON.toJSON(student_s);   
  12.           
  13.         //JSONObject 直接打印, 打印 toString() 或者 toJSONString() 输出结果是一样的  
  14.         System.out.println(object + " -- 打印 JSONOBject 本身");  
  15.         System.out.println(object.toString() + " -- 打印 JSONOBject.toString()");  
  16.         System.out.println(object.toJSONString() + " -- 打印 JSONOBject.toJSONString()");  
  17.           
  18.         //再创建一个 Student 对象  
  19.         Student student_j = new Student(2, "John Watson", 42, false, 1);  
  20.         //将两个 Student 对象放到 List 集合中  
  21.         List<Student> students = new ArrayList<Student>();  
  22.         students.add(student_s);  
  23.         students.add(student_j);  
  24.         //将 List 集合对象转为 JSONArray 对象  
  25.         JSONArray array = (JSONArray) JSON.toJSON(students);  
  26.           
  27.         //JSONArray 直接打印, 打印 toString() 或者 toJSONString() 输出结果是一样的  
  28.         System.out.println(array + " -- 打印 JSONArray 本身");  
  29.         System.out.println(array.toString() + " -- 打印 JSONArray.toString()");  
  30.         System.out.println(array.toJSONString() + " -- 打印 JSONArray.toJSONString()");  
  31.           
  32. }  


执行结果 : 

 

 

[plain] view plain copy
 
  1. {"age":42,"id":1,"male":true,"name":"Sherlock Holmes","schoolId":1} -- 打印 JSONOBject 本身  
  2. {"age":42,"id":1,"male":true,"name":"Sherlock Holmes","schoolId":1} -- 打印 JSONOBject.toString()  
  3. {"age":42,"id":1,"male":true,"name":"Sherlock Holmes","schoolId":1} -- 打印 JSONOBject.toJSONString()  
  4. [{"age":42,"id":1,"male":true,"name":"Sherlock Holmes","schoolId":1},{"age":42,"id":2,"male":false,"name":"John Watson","schoolId":1}] -- 打印 JSONArray 本身  
  5. [{"age":42,"id":1,"male":true,"name":"Sherlock Holmes","schoolId":1},{"age":42,"id":2,"male":false,"name":"John Watson","schoolId":1}] -- 打印 JSONArray.toString()  
  6. [{"age":42,"id":1,"male":true,"name":"Sherlock Holmes","schoolId":1},{"age":42,"id":2,"male":false,"name":"John Watson","schoolId":1}] -- 打印 JSONArray.toJSONString()  



 

 

3. JSON.parseArray 方法

 

 

(1) JSON.parseArray 方法简介

 

JSONArray parseArray(String text)方法简介 

-- 方法定义 : public static final JSONArray parseArray(String text) ;

-- 方法作用 : 将 json 字符串转为 JSONArray 对象;

-- 方法位置 : JSONArray com.alibaba.fastjson.JSON.parseArray(String text) ;

-- 参数介绍 : String text -> json 字符串 ;

 

<T> List<T> parseArray(String text, Class<T> clazz) 方法简介 : 

-- 方法定义 : public static final <T> List<T> parseArray(String text, Class<T> clazz) ;

-- 方法作用 : 将 json 字符串转为 List 集合;

-- 方法位置 : <T> List<T> com.alibaba.fastjson.JSON.parseArray(String text, Class<T> clazz) ;

-- 参数介绍 : String text -> json 字符串,  Class<T> clazz -> 集合元素类型;

 

 

(2) 代码示例

 

Main() 代码 : 

 

[java] view plain copy
 
  1. //字符串内容 [{"age":42,"id":1,"male":true,"name":"Sherlock Holmes","schoolId":1},{"age":42,"id":2,"male":false,"name":"John Watson","schoolId":1}]  
  2. public static final String json_array = "[{\"age\":42,\"id\":1,\"male\":true,\"name\":\"Sherlock Holmes\",\"schoolId\":1},{\"age\":42,\"id\":2,\"male\":false,\"name\":\"John Watson\",\"schoolId\":1}]";  
  3.   
  4. public static void main(String[] args) {  
  5.       
  6.     //将 json 字符串转为 JSONArray 对象  
  7.     JSONArray array = JSON.parseArray(json_array);  
  8.     //打印 JSONArray 对象  
  9.     System.out.println(array);  
  10.       
  11.     //将 json 字符串转为 List 集合  
  12.     List<Student> students = JSON.parseArray(json_array, Student.class);  
  13.     //打印 List 集合大小  
  14.     System.out.println("students.size() : " + students.size());  
  15.     //遍历 List 集合中的元素  
  16.     for(Student student : students)  
  17.         System.out.println(student.toString());  
  18.       
  19. }  


执行结果 : 

 

 

[plain] view plain copy
 
  1. [{"age":42,"id":1,"male":true,"name":"Sherlock Holmes","schoolId":1},{"age":42,"id":2,"male":false,"name":"John Watson","schoolId":1}]  
  2. students.size() : 2  
  3. Student [id=1, name=Sherlock Holmes, age=42, isMale=true, schoolId=1]  
  4. Student [id=2, name=John Watson, age=42, isMale=false, schoolId=1]  



 

 

4.  JSON.parseObject 方法

 

 

(1) JSON.parseObject 方法简介

 

JSONObject parseObject(String text) 方法简介 : 

-- 方法定义 public static final JSONObject parseObject(String text);

-- 方法作用 : 将 json 字符串类型转化为 JSONObject 对象;

-- 方法位置 : JSONObject com.alibaba.fastjson.JSON.parseObject(String text);

-- 参数介绍 : String text -> json 字符串;

 

<T> T parseObject(String text, Class<T> clazz) 方法简介 : 

 

-- 方法定义 : public static final <T> T parseObject(String text, Class<T> clazz);

-- 方法作用 : 将 json 字符串转为指定类型的 java bean 对象;

-- 方法位置 : <T> T com.alibaba.fastjson.JSON.parseObject(String text, Class<T> clazz);

-- 参数介绍 : String text -> json 字符串Class<T> clazz -> 要转化的 java bean 对象类型;

 


(2) 方法示例

 

Main() 方法 : 

 

[java] view plain copy
 
  1. //该字符串是 {"age":42,"id":1,"male":true,"name":"Sherlock Holmes","schoolId":1} 注意将 " 转为 \"  
  2. public static final String json_student =  "{\"age\":42,\"id\":1,\"male\":true,\"name\":\"Sherlock Holmes\",\"schoolId\":1}";  
  3.       
  4. public static void main(String[] args) {  
  5.       
  6.     //将 json 字符串转为 JSONObject 对象  
  7.     JSONObject object = JSON.parseObject(json_student);  
  8.     //打印 JSONObject 对象  
  9.     System.out.println(object);  
  10.       
  11.     //将 json 字符串转为 Student 对象  
  12.     Student student = JSON.parseObject(json_student, Student.class);  
  13.     //打印 Student 对象  
  14.     System.out.println(student.toString());  
  15.       
  16. }  


执行结果 : 

 

 

[plain] view plain copy
 
  1. {"age":42,"id":1,"male":true,"name":"Sherlock Holmes","schoolId":1}  
  2. Student [id=1, name=Sherlock Holmes, age=42, isMale=true, schoolId=1]  



 

 

5. JSON.parse 方法

 

 

(1) Object parse(String text) 方法简介

 

方法简介 : 

-- 方法定义 : public static final Object parse(String text);

-- 方法作用 : 将 json 字符串转为 JSONObject 或者 JSONArray 对象;

-- 方法位置 : Object com.alibaba.fastjson.JSON.parse(String text);

-- 参数介绍 : String text -> json 字符串;

 

 

(2) 代码示例

 

Main() 方法 : 

 

[java] view plain copy
 
  1. //该字符串是 {"age":42,"id":1,"male":true,"name":"Sherlock Holmes","schoolId":1} 注意将 " 转为 \"  
  2. public static final String json_student =  "{\"age\":42,\"id\":1,\"male\":true,\"name\":\"Sherlock Holmes\",\"schoolId\":1}";  
  3.       
  4. public static void main(String[] args) {  
  5.       
  6.     //将 json 字符串转为 JSONObect 对象  
  7.     JSONObject object = (JSONObject) JSON.parse(json_student);  
  8.     //打印 JSONObject 对象  
  9.     System.out.println(object);  
  10.       
  11.     //将 json 字符串 转为 JSONArray 对象  
  12.     JSONArray array = (JSONArray) JSON.parse(json_array);  
  13.     //打印 JSONArray 对象  
  14.     System.out.println(array);  
  15.       
  16. }  


运行结果 

 

 

[plain] view plain copy
 
  1. {"age":42,"id":1,"male":true,"name":"Sherlock Holmes","schoolId":1}  
  2. [{"age":42,"id":1,"male":true,"name":"Sherlock Holmes","schoolId":1},{"age":42,"id":2,"male":false,"name":"John Watson","schoolId":1}]  



 

 

三. JSONObject 相关用法

 

 

1. JSONObject 方法介绍

 

相关方法介绍 : 

-- 获取 JSONObject 中元素 : 获取 String 就调用 jsonObject.getString("key"), 获取 boolean 调用 jsonObject.getBoolean("key"), 同理还可以获取其它类型的数据;

-- 向 JSONObject 中添加元素 : object.put("action", "fuck");

-- 向 JSONObject 中添加多个元素 : 将一个 Map 集合添加到 JSONObject 中, Map 集合的键必须是 String 类型;

 

[java] view plain copy
 
  1. //向 JSONObject 对象中添加多个属性  
  2. Map<String, String> map = new HashMap<String, String>();  
  3. map.put("home", "American");  
  4. map.put("school", "harvard");  
  5. object.putAll(map);  

-- 移除 JSONObject 中的属性 : jsonObject.remove("key"), 参数是 键;

 

-- 获取 JSONObject 中元素个数 : jsonObject.size();

 

 

2. 代码示例

 

Main() 函数代码 : 

 

[java] view plain copy
 
  1. public static void main(String[] args) {  
  2.       
  3.     //创建 一个 Student 对象  
  4.     Student student = new Student(1, "Sherlock Holmes", 42, true, 1);   
  5.     //将 Java Bean 对象转为 JSONObject 对象  
  6.     JSONObject object = (JSONObject) JSON.toJSON(student);  
  7.     //打印 JSONObject 对象  
  8.     System.out.println(object.toString());  
  9.       
  10.     //获取 JSONObject 对象的 age 和 male 值  
  11.     String age = object.getString("age");  
  12.     boolean isMale = object.getBoolean("male");  
  13.     System.out.println("age : " + age + " , male : " + isMale);  
  14.       
  15.     //向 JSONObject 对象中添加单个属性  
  16.     object.put("action", "fuck");  
  17.     System.out.println(object.toString());  
  18.       
  19.     //向 JSONObject 对象中添加多个属性  
  20.     Map<String, String> map = new HashMap<String, String>();  
  21.     map.put("home", "American");  
  22.     map.put("school", "harvard");  
  23.     object.putAll(map);  
  24.     System.out.println(object.toJSONString());  
  25.       
  26.     //移除 JSONObject 对象中的属性  
  27.     object.remove("action");  
  28.     System.out.println(object);  
  29.       
  30.     //获取 JSONObject 中的属性个数  
  31.     System.out.println(object.size());  
  32.       
  33. }  



 

执行结果 : 

 

[plain] view plain copy
 
  1. {"age":42,"id":1,"male":true,"name":"Sherlock Holmes","schoolId":1}  
  2. age : 42 , male : true  
  3. {"action":"fuck","age":42,"id":1,"male":true,"name":"Sherlock Holmes","schoolId":1}  
  4. {"action":"fuck","age":42,"home":"American","id":1,"male":true,"name":"Sherlock Holmes","school":"harvard","schoolId":1}  
  5. {"age":42,"home":"American","id":1,"male":true,"name":"Sherlock Holmes","school":"harvard","schoolId":1}  
  6. 7  

 

 

 

 

四. 所有相关代码示例

 

 

1. Java Bean 类

 

 

[java] view plain copy
 
  1. package cn.org.octopus.fastjson.beans;  
  2.   
  3. public class Student {  
  4.   
  5.     private int id;  
  6.     private String name;  
  7.     private int age;  
  8.     private boolean isMale;  
  9.     private int schoolId;  
  10.       
  11.     public Student() {  
  12.         super();  
  13.     }  
  14.       
  15.     public Student(int id, String name, int age, boolean isMale, int schoolId) {  
  16.         super();  
  17.         this.id = id;  
  18.         this.name = name;  
  19.         this.age = age;  
  20.         this.isMale = isMale;  
  21.         this.schoolId = schoolId;  
  22.     }  
  23.   
  24.     public int getId() {  
  25.         return id;  
  26.     }  
  27.   
  28.     public void setId(int id) {  
  29.         this.id = id;  
  30.     }  
  31.   
  32.     public String getName() {  
  33.         return name;  
  34.     }  
  35.   
  36.     public void setName(String name) {  
  37.         this.name = name;  
  38.     }  
  39.   
  40.     public int getAge() {  
  41.         return age;  
  42.     }  
  43.   
  44.     public void setAge(int age) {  
  45.         this.age = age;  
  46.     }  
  47.   
  48.     public boolean isMale() {  
  49.         return isMale;  
  50.     }  
  51.   
  52.     public void setMale(boolean isMale) {  
  53.         this.isMale = isMale;  
  54.     }  
  55.   
  56.     public int getSchoolId() {  
  57.         return schoolId;  
  58.     }  
  59.   
  60.     public void setSchoolId(int schoolId) {  
  61.         this.schoolId = schoolId;  
  62.     }  
  63.   
  64.     @Override  
  65.     public String toString() {  
  66.         return "Student [id=" + id + ", name=" + name + ", age=" + age  
  67.                 + ", isMale=" + isMale + ", schoolId=" + schoolId + "]";  
  68.     }  
  69. }  



 

2. JSON 相关方法 Main 示例

 

 

[java] view plain copy
 
    1. package cn.org.octopus.fastjson;  
    2.   
    3. import java.util.ArrayList;  
    4. import java.util.HashMap;  
    5. import java.util.List;  
    6. import java.util.Map;  
    7.   
    8. import cn.org.octopus.fastjson.beans.Student;  
    9.   
    10. import com.alibaba.fastjson.JSON;  
    11. import com.alibaba.fastjson.JSONArray;  
    12. import com.alibaba.fastjson.JSONObject;  
    13.   
    14. public class Main {  
    15.   
    16.       
    17.     //字符串内容 [{"age":42,"id":1,"male":true,"name":"Sherlock Holmes","schoolId":1},{"age":42,"id":2,"male":false,"name":"John Watson","schoolId":1}]  
    18.     public static final String json_array = "[{\"age\":42,\"id\":1,\"male\":true,\"name\":\"Sherlock Holmes\",\"schoolId\":1},{\"age\":42,\"id\":2,\"male\":false,\"name\":\"John Watson\",\"schoolId\":1}]";  
    19.       
    20.     //该字符串是 {"age":42,"id":1,"male":true,"name":"Sherlock Holmes","schoolId":1} 注意将 " 转为 \"  
    21.     public static final String json_student =  "{\"age\":42,\"id\":1,\"male\":true,\"name\":\"Sherlock Holmes\",\"schoolId\":1}";  
    22.           
    23.     public static void main(String[] args) {  
    24.           
    25.           
    26.     }  
    27.   
    28.   
    29.   
    30.     /** 
    31.      * JSONArray 相关方法 
    32.      */  
    33.     private static void JSONArrayMethod() {  
    34.         // 创建一个 Student 对象  
    35.         Student student_s = new Student(1, "Sherlock Holmes", 42, true, 1);  
    36.         // 再创建一个 Student 对象  
    37.         Student student_j = new Student(2, "John Watson", 42, false, 1);  
    38.         // 将两个 Student 对象放到 List 集合中  
    39.         List<Student> students = new ArrayList<Student>();  
    40.         students.add(student_s);  
    41.         students.add(student_j);  
    42.           
    43.         // 将 List 集合对象转为 JSONArray 对象  
    44.         JSONArray array = (JSONArray) JSON.toJSON(students);  
    45.         System.out.println("List -> JSONArray : " + array);  
    46.           
    47.         //将 List 集合 转化成 json 字符串  
    48.         String json_array = JSON.toJSONString(students, true);  
    49.         System.out.println("List -> json Str" + json_array);  
    50.           
    51.         //json 字符串转为 List 集合  
    52.         List<Student> students1 = JSON.parseArray(json_array, Student.class);  
    53.         System.out.println("json Str -> List : " + students1);  
    54.           
    55.         //json 字符串转 JSONArray  
    56.         JSONArray array1 = JSON.parseArray(json_array);  
    57.         System.out.println("json Str -> JSONArray : " + array1);  
    58.     }  
    59.   
    60.   
    61.   
    62.     /** 
    63.      * JSONObject 相关方法 
    64.      */  
    65.     private static void JSONObjectMethod() {  
    66.         //创建 一个 Student 对象  
    67.         Student student = new Student(1, "Sherlock Holmes", 42, true, 1);   
    68.         //将 Java Bean 对象转为 JSONObject 对象  
    69.         JSONObject object = (JSONObject) JSON.toJSON(student);  
    70.         //打印 JSONObject 对象  
    71.         System.out.println(object.toString());  
    72.           
    73.         //获取 JSONObject 对象的 age 和 male 值  
    74.         String age = object.getString("age");  
    75.         boolean isMale = object.getBoolean("male");  
    76.         System.out.println("age : " + age + " , male : " + isMale);  
    77.           
    78.         //向 JSONObject 对象中添加单个属性  
    79.         object.put("action", "fuck");  
    80.         System.out.println(object.toString());  
    81.           
    82.         //向 JSONObject 对象中添加多个属性  
    83.         Map<String, String> map = new HashMap<String, String>();  
    84.         map.put("home", "American");  
    85.         map.put("school", "harvard");  
    86.         object.putAll(map);  
    87.         System.out.println(object.toJSONString());  
    88.           
    89.         //移除 JSONObject 对象中的属性  
    90.         object.remove("action");  
    91.         System.out.println(object);  
    92.           
    93.         //获取 JSONObject 中的属性个数  
    94.         System.out.println(object.size());  
    95.     }  
    96.   
    97.   
    98.   
    99.     /** 
    100.      * JSON.parse() 方法示例 
    101.      */  
    102.     private static void parseMethod() {  
    103.         //将 json 字符串转为 JSONObect 对象  
    104.         JSONObject object = (JSONObject) JSON.parse(json_student);  
    105.         //打印 JSONObject 对象  
    106.         System.out.println(object);  
    107.           
    108.         //将 json 字符串 转为 JSONArray 对象  
    109.         JSONArray array = (JSONArray) JSON.parse(json_array);  
    110.         //打印 JSONArray 对象  
    111.         System.out.println(array);  
    112.     }  
    113.   
    114.   
    115.   
    116.     /** 
    117.      * JSON.parseObject() 方法示例 
    118.      */  
    119.     private static void parseObjectMethod() {  
    120.         //将 json 字符串转为 JSONObject 对象  
    121.         JSONObject object = JSON.parseObject(json_student);  
    122.         //打印 JSONObject 对象  
    123.         System.out.println(object);  
    124.           
    125.         //将 json 字符串转为 Student 对象  JSON.parseObject(String text, Class<Student> clazz)  
    126.         Student student = JSON.parseObject(json_student, Student.class);  
    127.         //打印 Student 对象  
    128.         System.out.println(student.toString());  
    129.     }  
    130.   
    131.   
    132.   
    133.     /** 
    134.      * JSON.parseArray() 方法示例 
    135.      */  
    136.     private static void parseArrayMethod() {  
    137.         //将 json 字符串转为 JSONArray 对象  
    138.         JSONArray array = JSON.parseArray(json_array);  
    139.         //打印 JSONArray 对象  
    140.         System.out.println(array);  
    141.           
    142.         //将 json 字符串转为 List 集合  
    143.         List<Student> students = JSON.parseArray(json_array, Student.class);  
    144.         //打印 List 集合大小  
    145.         System.out.println("students.size() : " + students.size());  
    146.         //遍历 List 集合中的元素  
    147.         for(Student student : students)  
    148.             System.out.println(student.toString());  
    149.     }  
    150.   
    151.       
    152.       
    153.     /** 
    154.      * JSON.toJSON() 方法示例 
    155.      */  
    156.     private static void toJSONMethod() {  
    157.         //创建一个 Student 对象   
    158.         Student student_s = new Student(1, "Sherlock Holmes", 42, true, 1);   
    159.         //将 java bean 对象转为 JSONObject 对象  
    160.         JSONObject object = (JSONObject) JSON.toJSON(student_s);   
    161.           
    162.         //JSONObject 直接打印, 打印 toString() 或者 toJSONString() 输出结果是一样的  
    163.         System.out.println(object + " -- 打印 JSONOBject 本身");  
    164.         System.out.println(object.toString() + " -- 打印 JSONOBject.toString()");  
    165.         System.out.println(object.toJSONString() + " -- 打印 JSONOBject.toJSONString()");  
    166.           
    167.         //再创建一个 Student 对象  
    168.         Student student_j = new Student(2, "John Watson", 42, false, 1);  
    169.         //将两个 Student 对象放到 List 集合中  
    170.         List<Student> students = new ArrayList<Student>();  
    171.         students.add(student_s);  
    172.         students.add(student_j);  
    173.         //将 List 集合对象转为 JSONArray 对象  
    174.         JSONArray array = (JSONArray) JSON.toJSON(students);  
    175.           
    176.         String format_json = JSON.toJSONString(students, true);  
    177.         System.out.println(format_json);  
    178.           
    179.         //JSONArray 直接打印, 打印 toString() 或者 toJSONString() 输出结果是一样的  
    180.         System.out.println(array + " -- 打印 JSONArray 本身");  
    181.         System.out.println(array.toString() + " -- 打印 JSONArray.toString()");  
    182.         System.out.println(array.toJSONString() + " -- 打印 JSONArray.toJSONString()");  
    183.     }  
    184.   
    185.     /** 
    186.      * JSON.toJSONString 示例 
    187.      */  
    188.     private static void toJsonStringMethod() {  
    189.         //创建一个 Student 对象  
    190.         Student student = new Student(1, "Sherlock Holmes", 42, true, 1);   
    191.         //将 Student 对象转为 json 字符串   
    192.         String json = JSON.toJSONString(student);  
    193.         //打印 json 字符串   
    194.         System.out.println(json);  
    195.           
    196.         //将 Student 对象转为 json 字符串, 这个字符串是经过格式化的  
    197.         String format_json = JSON.toJSONString(student, true);  
    198.         //打印格式化的 json  
    199.         System.out.println(format_json);  
    200.     }  
    201.   
    202. }  






















以上是关于fastjson(转)的主要内容,如果未能解决你的问题,请参考以下文章

fastjson中怎么把java对象转化为json对象

如何解决fastjson把对象转化成json避免$ref

fastjson(转)

fastjson怎么将bean转成map

fastjson List转JSONArray以及JSONArray转List

[转]FastJSON通过SerializeFilter定制序列化