zoukankan      html  css  js  c++  java
  • 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。

    为测试3.0奋斗吧!
  • 相关阅读:
    hdu 1269 迷宫城堡(trajan判环)
    codeforces 591 E. Three States(bfs+思维)
    PowerDesigner 教程
    SQL中inner join、outer join和cross join的区别
    SQL 报表 --简易进销系统
    SQL PROMPT5.3.4.1的一些设置选项
    SQL锁机制和事务隔离级别
    洛谷P1901 发射站
    洛谷P1823 [COI2007] Patrik 音乐会的等待
    洛谷P2947 [USACO09MAR]向右看齐Look Up
  • 原文地址:https://www.cnblogs.com/zhanglijun/p/14860422.html
Copyright © 2011-2022 走看看