fastjson(转)

一弦一仙      2022-02-13     313

关键词:

博客地址 : 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泛型转对象第一次可以正常转,第二次就变成jsonarray问题

在解析json数据的时候,在使用泛型对象的时候即:publicclassResultMsgDto<E>implementsSerializable{privatestaticfinallongserialVersionUID=123L;privateintresultCode;privateEresultObject;privateStringresultMsg; //getset}第 查看详情

fastjson2学习笔记(代码片段)

FastJSON2学习笔记pom.xml非完美兼容fastjson1测试数据JavaBeanJsonString序列化toJSONStringFeatures1.格式化输出2.序列化时输出类型信息3.使用单引号4.序列话时包含为null的字段反序列化JSONObjectjsonString转JavaBeanjsonString转JSONObjectJSONObject转JavaBean... 查看详情

fastjson2学习笔记(代码片段)

FastJSON2学习笔记pom.xml非完美兼容fastjson1测试数据JavaBeanJsonString序列化toJSONStringFeatures1.格式化输出2.序列化时输出类型信息3.使用单引号4.序列话时包含为null的字段反序列化JSONObjectjsonString转JavaBeanjsonString转JSONObjectJSONObject转JavaBean... 查看详情

fastjson2学习笔记(代码片段)

FastJSON2学习笔记pom.xml非完美兼容fastjson1测试数据JavaBeanJsonString序列化toJSONStringFeatures1.格式化输出2.序列化时输出类型信息3.使用单引号4.序列话时包含为null的字段反序列化JSONObjectjsonString转JavaBeanjsonString转JSONObjectJSONObject转JavaBean... 查看详情

关于fastjson对象转字符串,对象有字段为null会自动忽略

参考技术A前两天遇到的一个问题,记录下使用FastJSON把对象转成字符串,然后通过rabbitmq发送到队列,消费端监听到之后我拿到消息又使用FastJSON重新解析为对象,结果报错,说类型转换异常,json字符串不能转换为那个对象后来debug发现,... 查看详情

fastjson使用笔记

1.string转jsonStringparams={‘key1‘:‘50001‘,‘key2‘:10007700‘}Map<String,String>a=JSON.parseObject(params,newTypeReference<Map<String,String>>(){});2.string转objectStringparams={‘key1‘:‘ 查看详情

fastjson解析超长json串以及转成list,map等方法实例

...的数据最后在进行处理.转换成对象使用的是阿里巴巴的fastjson,上度娘找了一下,好多使用的是:import net.sf.json.JSONArray;import net.sf.json.JSONObject;这两个,可 查看详情

在使用fastjson转map,怎么让map中为null的值等

参考技术A  WriteNonStringKeyAsString,再配个这个试试,实在不行就看源码FastJsonHttpMessageConverter.java调试进去,你应该能找得到答案的本回答被提问者采纳 查看详情

fastjson将字符串转java对象日期序列化异常日期格式报错解决(代码片段)

异常信息 com.alibaba.fastjson.JSONException:Forinputstring:"2022-12" atcom.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:693) atcom.alibaba.fastjson.JSON.parseObject(JSON.java:395) atcom.alibaba.fastjson.JSON.parseObject(JSON.java:299) atcom.alibaba.fastjs... 查看详情

fastjson将字符串转java对象日期序列化异常日期格式报错解决(代码片段)

异常信息 com.alibaba.fastjson.JSONException:Forinputstring:"2022-12" atcom.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:693) atcom.alibaba.fastjson.JSON.parseObject(JSON.java:395) atcom.alibaba.fastjson.JSON.parseObject(JSON.java:299) atcom.alibaba.fastjs... 查看详情

fastjson的常用用法以及自定义排序

fastJson的四种常用方法JSON转POJOpublicstatic<T>TgetObject(Stringpojo,Class<T>tclass){returnJSONObject.parseObject(pojo,tclass);}POJO转JSONpublicstatic<T>StringgetJson(TtResponse){returnJSONOb 查看详情

利用fastjson解析json并通过js&ajax实现页面的无跳转刷新

...,本例中通过一个小案例讲解如何通过alibaba的开源框架fastjson来解析jason数据格式并通过js实现无跳转刷新2,新建一个web项目,这是我的项目:我这里直接用servlet写的注意导包,我这里到了很多无用的包,其实主要的包是下面几... 查看详情

fastjson使用

json字符串转map结构LinkedHashMap<String,String>jsonMap=JSON.parseObject(jsonStr,newTypeReference<LinkedHashMap<String,String>>(){}); 查看详情

转java解析多层json(代码片段)

java分别解析下面两个json字符串packagejansonDemo;importcom.alibaba.fastjson.JSON;importcom.alibaba.fastjson.JSONArray;importcom.alibaba.fastjson.JSONObject;publicclassTestJSON/***JSON实际上也是键值对("key":"value")*key必 查看详情

fastjson处理double的精度问题

项目中使用fastjson来处理json格式,当前使用的版本为1.1.37。在和其它系统交互时,将一个json串传给了对方,原值为5.0,json处理后格式为:{"dou",5};结果对方处理该串报错了,原因是他将串整理转成Map,在取值时强制转为了Double,... 查看详情

python工程师java之路(r)把字符串转成json(代码片段)

文章目录概述使用fastjson,把字符串转成JSONJava版Scala版Spark版概述JSON(JavaScriptObjectNotation,JS对象简谱)是一种轻量级的数据交换格式采用完全独立于编程语言的文本格式来存储和表示数据使用fastjson,把字符串转成JSONMAVEN依... 查看详情

springboot配置fastjson解析----返回json字符串null转空字符串解决方案

参考技术A更多内容请浏览本人博客fastjon的详细配置在这篇文章中讲的很详细,就不一一叙述了http://blog.csdn.net/u010246789/article/details/52539576 查看详情

json字符串转换为map(转)

本文是利用阿里巴巴封装的FastJSON来转换json字符串的。例子如下:packagecom.zkn.newlearn.json;importcom.alibaba.fastjson.JSON;importcom.alibaba.fastjson.JSONObject;importjava.util.Map;/***JSON字符串自动转换*Createdbyzknon2016/8/22.*/pu 查看详情