编程语言
首页 > 编程语言> > FastJson对于JSON格式字符串、JSON对象及JavaBean之间的相互转换

FastJson对于JSON格式字符串、JSON对象及JavaBean之间的相互转换

作者:互联网

转自:https://blog.csdn.net/a18827547638/article/details/80777366

一、定义

fastJson对于json格式字符串的解析主要用到了一下三个类:

JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换。

JSONObject:fastJson提供的json对象。我们可以把JSONObject当成一个Map<String,Object>来看

JSONArray:fastJson提供json数组对象。我们可以把JSONArray当做一个List<Object>,可以把JSONArray看成JSONObject对象的一个集合

 

二、数据

首先定义三个json格式的字符串,作为我们的数据源。

 1 //1、json字符串-简单对象型
 2 private static final String  JSON_OBJ_STR = "{\"studentName\":\"lily\",\"studentAge\":12}";
 3   {
 4 
 5     "studentName":"lily",
 6 
 7     "studentAge":12
 8 
 9  }
10 //2、json字符串-数组类型
11 private static final String  JSON_ARRAY_STR = "[{\"studentName\":\"lily\",\"studentAge\":12},{\"studentName\":\"lucy\",\"studentAge\":15}]";
12 [
13     {
14 
15       "studentName":"lily",
16 
17       "studentAge":12
18 
19     },
20     {
21 
22       "studentName":"lucy",
23 
24       "studentAge":15
25 
26     }
27 ]
28 //3、复杂格式json字符串
29 private static final String  COMPLEX_JSON_STR = "{\"teacherName\":\"crystall\",\"teacherAge\":27,\"course\":{\"courseName\":\"english\",\"code\":1270},\"students\":[{\"studentName\":\"lily\",\"studentAge\":12},{\"studentName\":\"lucy\",\"studentAge\":15}]}";
30 {
31   "teacherName":"crystall",
32 
33   "teacherAge":27,
34 
35   "course":{
36 
37     "courseName":"english",
38 
39     "code":1270
40 
41     },
42 
43 
44   "students":[
45 
46     {
47 
48       "studentName":"lily",
49 
50       "studentAge":12
51 
52     },
53 
54     {
55 
56       "studentName":"lucy",
57 
58       "studentAge":15
59 
60     }
61 
62   ]
63 
64  }

 

三、转化

 3.1 JSON格式字符串与JSON对象之间的转换。

  3.1.1  json字符串-简单对象型与JSONObject之间的转换    

 1 /**
 2      * json字符串-简单对象型与JSONObject之间的转换
 3      */
 4     public static void testJSONStrToJSONObject(){
 5  
 6         JSONObject jsonObject = JSON.parseObject(JSON_OBJ_STR);
 7         //JSONObject jsonObject1 = JSONObject.parseObject(JSON_OBJ_STR); //因为JSONObject继承了JSON,所以这样也是可以的
 8  
 9         System.out.println(jsonObject.getString("studentName")+":"+jsonObject.getInteger("studentAge"));
10  
11     }

  3.1.2 json字符串-数组类型与JSONArray之间的转换

 1    /**
 2      * json字符串-数组类型与JSONArray之间的转换
 3      */
 4     public static void testJSONStrToJSONArray(){
 5  
 6         JSONArray jsonArray = JSON.parseArray(JSON_ARRAY_STR);
 7         //JSONArray jsonArray1 = JSONArray.parseArray(JSON_ARRAY_STR);//因为JSONArray继承了JSON,所以这样也是可以的
 8  
 9         //遍历方式1
10         int size = jsonArray.size();
11         for (int i = 0; i < size; i++){
12             JSONObject jsonObject = jsonArray.getJSONObject(i);
13             System.out.println(jsonObject.getString("studentName")+":"+jsonObject.getInteger("studentAge"));
14         }
15         //遍历方式2
16         for (Object obj : jsonArray) {
17             JSONObject jsonObject = (JSONObject) obj;
18             System.out.println(jsonObject.getString("studentName")+":"+jsonObject.getInteger("studentAge"));
19         }
20   }

  3.1.3 复杂json格式字符串与JSONObject之间的转换

 1    /**
 2      * 复杂json格式字符串与JSONObject之间的转换
 3      */
 4     public static void testComplexJSONStrToJSONObject(){
 5  
 6         JSONObject jsonObject = JSON.parseObject(COMPLEX_JSON_STR);
 7         //JSONObject jsonObject1 = JSONObject.parseObject(COMPLEX_JSON_STR);//因为JSONObject继承了JSON,所以这样也是可以的
 8         
 9         String teacherName = jsonObject.getString("teacherName");
10         Integer teacherAge = jsonObject.getInteger("teacherAge");
11         JSONObject course = jsonObject.getJSONObject("course");
12         JSONArray students = jsonObject.getJSONArray("students");
13  
14   }

 3.2 JSON格式字符串与javaBean之间的转换。

  3.2.1  javaBean定义,为三个JSON串转Bean做准备。

 1 1、定义一个学生类:
 2 public class Student {
 3  
 4     private String studentName;
 5     private Integer studentAge;
 6  
 7     public String getStudentName() {
 8         return studentName;
 9     }
10  
11     public void setStudentName(String studentName) {
12         this.studentName = studentName;
13     }
14  
15     public Integer getStudentAge() {
16         return studentAge;
17     }
18  
19     public void setStudentAge(Integer studentAge) {
20         this.studentAge = studentAge;
21     }
22 }
 1 2、定一个课程类:
 2 public class Course {
 3  
 4     private String courseName;
 5     private Integer code;
 6  
 7     public String getCourseName() {
 8         return courseName;
 9     }
10  
11     public void setCourseName(String courseName) {
12         this.courseName = courseName;
13     }
14  
15     public Integer getCode() {
16         return code;
17     }
18  
19     public void setCode(Integer code) {
20         this.code = code;
21     }
22 }
 1 3、定义一个老师类:
 2 public class Teacher {
 3  
 4     private String teacherName;
 5     private Integer teacherAge;
 6     private Course course;
 7     private List<Student> students;
 8  
 9     public String getTeacherName() {
10         return teacherName;
11     }
12  
13     public void setTeacherName(String teacherName) {
14         this.teacherName = teacherName;
15     }
16  
17     public Integer getTeacherAge() {
18         return teacherAge;
19     }
20  
21     public void setTeacherAge(Integer teacherAge) {
22         this.teacherAge = teacherAge;
23     }
24  
25     public Course getCourse() {
26         return course;
27     }
28  
29     public void setCourse(Course course) {
30         this.course = course;
31     }
32  
33     public List<Student> getStudents() {
34         return students;
35     }
36  
37     public void setStudents(List<Student> students) {
38         this.students = students;
39     }
40 }

  json字符串与javaBean之间的转换推荐使用 TypeReference<T> 这个类,使用泛型可以更加清晰  

  3.2.2 json字符串-简单对象型与javaBean之间的转换

 1    /**
 2      * json字符串-简单对象与JavaBean_obj之间的转换
 3      */
 4     public static void testJSONStrToJavaBeanObj(){
 5  
 6         Student student = JSON.parseObject(JSON_OBJ_STR, new TypeReference<Student>() {});
 7         //Student student1 = JSONObject.parseObject(JSON_OBJ_STR, new TypeReference<Student>() {});//因为JSONObject继承了JSON,所以这样也是可以的
 8  
 9         System.out.println(student.getStudentName()+":"+student.getStudentAge());
10  
11   }

  3.2.3 json字符串-数组类型与javaBean之间的转换

 1     /**
 2      * json字符串-数组类型与JavaBean_List之间的转换
 3      */
 4     public static void testJSONStrToJavaBeanList(){
 5         
 6         ArrayList<Student> students = JSON.parseObject(JSON_ARRAY_STR, new TypeReference<ArrayList<Student>>() {});
 7         //ArrayList<Student> students1 = JSONArray.parseObject(JSON_ARRAY_STR, new TypeReference<ArrayList<Student>>() {});//因为JSONArray继承了JSON,所以这样也是可以的
 8         
 9         for (Student student : students) {
10             System.out.println(student.getStudentName()+":"+student.getStudentAge());
11         }
12     }

  3.2.4 复杂json格式字符串与与javaBean之间的转换

 1     /**
 2      * 复杂json格式字符串与JavaBean_obj之间的转换
 3      */
 4     public static void testComplexJSONStrToJavaBean(){
 5  
 6         Teacher teacher = JSON.parseObject(COMPLEX_JSON_STR, new TypeReference<Teacher>() {});
 7         //Teacher teacher1 = JSON.parseObject(COMPLEX_JSON_STR, new TypeReference<Teacher>() {});//因为JSONObject继承了JSON,所以这样也是可以的
 8         String teacherName = teacher.getTeacherName();
 9         Integer teacherAge = teacher.getTeacherAge();
10         Course course = teacher.getCourse();
11         List<Student> students = teacher.getStudents();
12     }

此外的:

1,对于JSON对象与JSON格式字符串的转换可以直接用 toJSONString()这个方法。

2,javaBean与JSON格式字符串之间的转换要用到:JSON.toJSONString(obj);

3,javaBean与json对象间的转换使用:JSON.toJSON(obj),然后使用强制类型转换,JSONObject或者JSONArray。

标签:FastJson,studentName,JSONObject,json,JSON,studentAge,public,JavaBean
来源: https://www.cnblogs.com/zhanglijun/p/14860422.html