java fastjosn使用
1. 使用fastjson需要的依赖
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.60</version> </dependency>
2. 对象与json转换关系

3. fastjson常用方法基本使用
先准备自定义类
package com.ggh.study; import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; public class People { private String idCard; //身份证号 public People() { } public People(String idCard) { this.idCard = idCard; } public String getIdCard() { return idCard; } public void setIdCard(String idCard) { this.idCard = idCard; } @Override public String toString() { return "People{" + "idCard=" + (idCard==null?"":'\'') + idCard + (idCard==null?"":'\'') + '}'; } } class Student extends People{ private Integer id; private String name; private Boolean isMen; private Integer age; private String email; private Date birthday; public Student() { } public Student(Integer id, String name, Boolean isMen, Integer age, String email, Date birthday) { this.id = id; this.name = name; this.isMen = isMen; this.age = age; this.email = email; this.birthday = birthday; } public Student(String idCard, Integer id, String name, Boolean isMen, Integer age, String email, Date birthday) { super(idCard); this.id = id; this.name = name; this.isMen = isMen; this.age = age; this.email = email; this.birthday = birthday; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Boolean getMen() { return isMen; } public void setMen(Boolean men) { isMen = men; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } @Override public String toString() { return "Student{" + super.toString() + ", id=" + id + ", name=" + (name==null?"":'\'') + name + (name==null?"":'\'') + ", isMen=" + isMen + ", age=" + age + ", email=" + (email==null?"":'\'') + email + (email==null?"":'\'') + ", birthday=" + (birthday==null?"":'\'') + birthday + (birthday==null?"":'\'') + '}'; } } class Teacher extends People{ private Integer id; private String name; private Integer age; private Student myChild; //我的孩子 private String[] advantage; //优点 private List<Student> taughtStudentList; //教过的学生 private Map<String, Student> intimacyMap; //与各学生的亲密等级 public Teacher() { } public Teacher(Integer id, String name, Integer age, Student myChild, String[] advantage, List<Student> taughtStudentList, Map<String, Student> intimacyMap) { this.id = id; this.name = name; this.age = age; this.myChild = myChild; this.advantage = advantage; this.taughtStudentList = taughtStudentList; this.intimacyMap = intimacyMap; } public Teacher(String idCard, Integer id, String name, Integer age, Student myChild, String[] advantage, List<Student> taughtStudentList, Map<String, Student> intimacyMap) { super(idCard); this.id = id; this.name = name; this.age = age; this.myChild = myChild; this.advantage = advantage; this.taughtStudentList = taughtStudentList; this.intimacyMap = intimacyMap; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Student getMyChild() { return myChild; } public void setMyChild(Student myChild) { this.myChild = myChild; } public String[] getAdvantage() { return advantage; } public void setAdvantage(String[] advantage) { this.advantage = advantage; } public List<Student> getTaughtStudentList() { return taughtStudentList; } public void setTaughtStudentList(List<Student> taughtStudentList) { this.taughtStudentList = taughtStudentList; } public Map<String, Student> getIntimacyMap() { return intimacyMap; } public void setIntimacyMap(Map<String, Student> intimacyMap) { this.intimacyMap = intimacyMap; } @Override public String toString() { return "Teacher{" + "id=" + id + ", name=" + (name==null?"":'\'') + name + (name==null?"":'\'') + ", age=" + age + ", myChild=" + myChild + ", advantage=" + Arrays.toString(advantage) + ", taughtStudentList=" + taughtStudentList + ", intimacyMap=" + intimacyMap + '}'; } }
3.1. java对象 与 json字符串 互转
package com.ggh.study; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.TypeReference; import java.util.ArrayList; import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; public class FastJsonStudy1 { public static void main(String[] args) { Student javaObject1 = new Student("915825095613202836",1,"李小龙",true,25,"lixiaolong@qq.com",new Date(1656210000000L)); Student javaObject2 = new Student("985025033313262858",2,"李嘉诚",true,100,"4848438@qq.com",new Date(1656220000000L)); Student javaObject3 = new Student("912655095693206526",3,"你叉叉",null,333,"nixx@qq.com",new Date(1656230000000L)); List<Student> list1 = new ArrayList<Student>(); Collections.addAll(list1,javaObject1,javaObject2,javaObject3); Map<String,Student> map1 = new HashMap<String, Student>(); map1.put("key1",javaObject1); map1.put("key2",javaObject2); map1.put("key3",javaObject3); Teacher JavaObject4 = new Teacher("915964265816522636",1,"孔子",99,javaObject1,new String[]{"李小龙","李嘉诚","你叉叉"},list1,map1); /*自定义简单java对象 与 JSON字符串 正反序列化*/ // {"age":25,"birthday":1656210000000,"email":"lixiaolong@qq.com","id":1,"idCard":"915825095613202836","men":true,"name":"李小龙"} String jsonString1 = JSON.toJSONString(javaObject1); // Student{People{idCard='915825095613202836'}, id=1, name='李小龙', isMen=true, age=25, email='lixiaolong@qq.com', birthday='Thu Jan 01 08:00:11 CST 1970'} String jsonString01 = "{\"age\":25,\"birthday\":1656210000000,\"email\":\"lixiaolong@qq.com\",\"id\":1,\"idCard\":\"915825095613202836\",\"men\":true,\"name\":\"李小龙\"}"; // Student{People{idCard='915825095613202836'}, id=1, name='李小龙', isMen=true, age=25, email='lixiaolong@qq.com', birthday='Sun Jun 26 10:20:00 CST 2022'} Student javaObject01 = JSON.parseObject(jsonString01, Student.class); /*Map对象 与 JSON字符串 正反序列化*/ // {"key1":{"age":25,"birthday":1656210000000,"email":"lixiaolong@qq.com","id":1,"idCard":"915825095613202836","men":true,"name":"李小龙"}, // "key2":{"age":100,"birthday":1656220000000,"email":"4848438@qq.com","id":2,"idCard":"985025033313262858","men":true,"name":"李嘉诚"}, // "key3":{"age":333,"birthday":1656230000000,"email":"nixx@qq.com","id":3,"idCard":"912655095693206526","name":"你叉叉"}} String jsonString2 = JSON.toJSONString(map1); // {"key1":{"age":25,"birthday":1656210000000,"email":"lixiaolong@qq.com","id":1,"idCard":"915825095613202836","men":true,"name":"李小龙"}, // "key2":{"age":100,"birthday":1656220000000,"email":"4848438@qq.com","id":2,"idCard":"985025033313262858","men":true,"name":"李嘉诚"}, // "key3":{"age":333,"birthday":1656230000000,"email":"nixx@qq.com","id":3,"idCard":"912655095693206526","name":"你叉叉"}} String jsonString02 = "{\"key1\":{\"age\":25,\"birthday\":1656210000000,\"email\":\"lixiaolong@qq.com\",\"id\":1,\"idCard\":\"915825095613202836\",\"men\":true,\"name\":\"李小龙\"}," + "\"key2\":{\"age\":100,\"birthday\":1656220000000,\"email\":\"4848438@qq.com\",\"id\":2,\"idCard\":\"985025033313262858\",\"men\":true,\"name\":\"李嘉诚\"}," + "\"key3\":{\"age\":333,\"birthday\":1656230000000,\"email\":\"nixx@qq.com\",\"id\":3,\"idCard\":\"912655095693206526\",\"name\":\"你叉叉\"}}"; // {key1=Student{People{idCard='915825095613202836'}, id=1, name='李小龙', isMen=true, age=25, email='lixiaolong@qq.com', birthday='Sun Jun 26 10:20:00 CST 2022'}, // key2=Student{People{idCard='985025033313262858'}, id=2, name='李嘉诚', isMen=true, age=100, email='4848438@qq.com', birthday='Sun Jun 26 13:06:40 CST 2022'}, // key3=Student{People{idCard='912655095693206526'}, id=3, name='你叉叉', isMen=null, age=333, email='nixx@qq.com', birthday='Sun Jun 26 15:53:20 CST 2022'}} Map<String,Student> map01 = JSON.parseObject(jsonString02, new TypeReference<Map<String,Student>>() {}); /*List对象 与 JSON字符串 正反序列化*/ // [{"age":25,"birthday":1656210000000,"email":"lixiaolong@qq.com","id":1,"idCard":"915825095613202836","men":true,"name":"李小龙"}, // {"age":100,"birthday":1656220000000,"email":"4848438@qq.com","id":2,"idCard":"985025033313262858","men":true,"name":"李嘉诚"}, // {"age":333,"birthday":1656230000000,"email":"nixx@qq.com","id":3,"idCard":"912655095693206526","name":"你叉叉"}] String jsonString3 = JSON.toJSONString(list1); // [{"age":25,"birthday":1656210000000,"email":"lixiaolong@qq.com","id":1,"idCard":"915825095613202836","men":true,"name":"李小龙"}, // {"age":100,"birthday":1656220000000,"email":"4848438@qq.com","id":2,"idCard":"985025033313262858","men":true,"name":"李嘉诚"}, // {"age":333,"birthday":1656230000000,"email":"nixx@qq.com","id":3,"idCard":"912655095693206526","name":"你叉叉"}] String jsonString03 = "[{\"age\":25,\"birthday\":1656210000000,\"email\":\"lixiaolong@qq.com\",\"id\":1,\"idCard\":\"915825095613202836\",\"men\":true,\"name\":\"李小龙\"}," + "{\"age\":100,\"birthday\":1656220000000,\"email\":\"4848438@qq.com\",\"id\":2,\"idCard\":\"985025033313262858\",\"men\":true,\"name\":\"李嘉诚\"}," + "{\"age\":333,\"birthday\":1656230000000,\"email\":\"nixx@qq.com\",\"id\":3,\"idCard\":\"912655095693206526\",\"name\":\"你叉叉\"}]"; // [Student{People{idCard='915825095613202836'}, id=1, name='李小龙', isMen=true, age=25, email='lixiaolong@qq.com', birthday='Sun Jun 26 10:20:00 CST 2022'}, // Student{People{idCard='985025033313262858'}, id=2, name='李嘉诚', isMen=true, age=100, email='4848438@qq.com', birthday='Sun Jun 26 13:06:40 CST 2022'}, // Student{People{idCard='912655095693206526'}, id=3, name='你叉叉', isMen=null, age=333, email='nixx@qq.com', birthday='Sun Jun 26 15:53:20 CST 2022'}] List<Student> list01 = JSON.parseArray(jsonString03, Student.class); // [Student{People{idCard='915825095613202836'}, id=1, name='李小龙', isMen=true, age=25, email='lixiaolong@qq.com', birthday='Sun Jun 26 10:20:00 CST 2022'}, // Student{People{idCard='985025033313262858'}, id=2, name='李嘉诚', isMen=true, age=100, email='4848438@qq.com', birthday='Sun Jun 26 13:06:40 CST 2022'}, // Student{People{idCard='912655095693206526'}, id=3, name='你叉叉', isMen=null, age=333, email='nixx@qq.com', birthday='Sun Jun 26 15:53:20 CST 2022'}] List<Student> list001 = JSON.parseObject(jsonString03, new TypeReference<List<Student>>() {}); /*复杂java对象 与 JSON子字符串 正反序列化*/ // {"advantage":["李小龙","李嘉诚","你叉叉"],"age":99,"id":1,"idCard":"915964265816522636", // "intimacyMap": // {"key1":{"age":25,"birthday":1656210000000,"email":"lixiaolong@qq.com","id":1,"idCard":"915825095613202836","men":true,"name":"李小龙"}, // "key2":{"age":100,"birthday":1656220000000,"email":"4848438@qq.com","id":2,"idCard":"985025033313262858","men":true,"name":"李嘉诚"}, // "key3":{"age":333,"birthday":1656230000000,"email":"nixx@qq.com","id":3,"idCard":"912655095693206526","name":"你叉叉"}}, // "myChild": // {"$ref":"$.intimacyMap.key1"}, // "name":"孔子", // "taughtStudentList": // [{"$ref":"$.intimacyMap.key1"}, // {"$ref":"$.intimacyMap.key2"}, // {"$ref":"$.intimacyMap.key3"}]} String jsonString4 = JSON.toJSONString(JavaObject4); // {"advantage":["李小龙","李嘉诚","你叉叉"], // "age":99, // "id":1, // "idCard":"915964265816522636", // "intimacyMap": // {"key1":{"age":25,"birthday":1656210000000,"email":"lixiaolong@qq.com","id":1,"idCard":"915825095613202836","men":true,"name":"李小龙"}, // "key2":{"age":100,"birthday":1656220000000,"email":"4848438@qq.com","id":2,"idCard":"985025033313262858","men":true,"name":"李嘉诚"}, // "key3":{"age":333,"birthday":1656230000000,"email":"nixx@qq.com","id":3,"idCard":"912655095693206526","name":"你叉叉"}}, // "myChild":{"$ref":"$.intimacyMap.key1"}, // "name":"孔子", // "taughtStudentList": // [{"$ref":"$.intimacyMap.key1"},{"$ref":"$.intimacyMap.key2"},{"$ref":"$.intimacyMap.key3"}]} String jsonString04 = "{\"advantage\":[\"李小龙\",\"李嘉诚\",\"你叉叉\"]," + "\"age\":99," + "\"id\":1," + "\"idCard\":\"915964265816522636\"," + "\"intimacyMap\":" + "{\"key1\":{\"age\":25,\"birthday\":1656210000000,\"email\":\"lixiaolong@qq.com\",\"id\":1,\"idCard\":\"915825095613202836\",\"men\":true,\"name\":\"李小龙\"}," + "\"key2\":{\"age\":100,\"birthday\":1656220000000,\"email\":\"4848438@qq.com\",\"id\":2,\"idCard\":\"985025033313262858\",\"men\":true,\"name\":\"李嘉诚\"}," + "\"key3\":{\"age\":333,\"birthday\":1656230000000,\"email\":\"nixx@qq.com\",\"id\":3,\"idCard\":\"912655095693206526\",\"name\":\"你叉叉\"}}," + "\"myChild\":{\"$ref\":\"$.intimacyMap.key1\"}," + "\"name\":\"孔子\"," + "\"taughtStudentList\":" + "[{\"$ref\":\"$.intimacyMap.key1\"},{\"$ref\":\"$.intimacyMap.key2\"},{\"$ref\":\"$.intimacyMap.key3\"}]}"; // Teacher{id=1, // name='孔子', // age=99, // myChild=Student{People{idCard='915825095613202836'}, id=1, name='李小龙', isMen=true, age=25, email='lixiaolong@qq.com', birthday='Sun Jun 26 10:20:00 CST 2022'}, // advantage=[李小龙, 李嘉诚, 你叉叉], // taughtStudentList= // [Student{People{idCard='915825095613202836'}, id=1, name='李小龙', isMen=true, age=25, email='lixiaolong@qq.com', birthday='Sun Jun 26 10:20:00 CST 2022'}, // Student{People{idCard='985025033313262858'}, id=2, name='李嘉诚', isMen=true, age=100, email='4848438@qq.com', birthday='Sun Jun 26 13:06:40 CST 2022'}, // Student{People{idCard='912655095693206526'}, id=3, name='你叉叉', isMen=null, age=333, email='nixx@qq.com', birthday='Sun Jun 26 15:53:20 CST 2022'}], // intimacyMap= // {key1=Student{People{idCard='915825095613202836'}, id=1, name='李小龙', isMen=true, age=25, email='lixiaolong@qq.com', birthday='Sun Jun 26 10:20:00 CST 2022'}, // key2=Student{People{idCard='985025033313262858'}, id=2, name='李嘉诚', isMen=true, age=100, email='4848438@qq.com', birthday='Sun Jun 26 13:06:40 CST 2022'}, // key3=Student{People{idCard='912655095693206526'}, id=3, name='你叉叉', isMen=null, age=333, email='nixx@qq.com', birthday='Sun Jun 26 15:53:20 CST 2022'}}} Teacher javaObject4 = JSON.parseObject(jsonString04, new TypeReference<Teacher>() {}); } }
3.2. json对象 与 json字符串 互转 及 json对象 转 java对象
package com.ggh.study; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.TypeReference; import java.util.ArrayList; import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; public class FastJsonStudy2 { public static void main(String[] args) { Student javaObject1 = new Student("915825095613202836",1,"李小龙",true,25,"lixiaolong@qq.com",new Date(1656210000000L)); Student javaObject2 = new Student("985025033313262858",2,"李嘉诚",true,100,"4848438@qq.com",new Date(1656220000000L)); Student javaObject3 = new Student("912655095693206526",3,"你叉叉",null,333,"nixx@qq.com",new Date(1656230000000L)); List<Student> list1 = new ArrayList<Student>(); Collections.addAll(list1,javaObject1,javaObject2,javaObject3); Map<String,Student> map1 = new HashMap<String, Student>(); map1.put("key1",javaObject1); map1.put("key2",javaObject2); map1.put("key3",javaObject3); Teacher JavaObject4 = new Teacher("915964265816522636",1,"孔子",99,javaObject1,new String[]{"李小龙","李嘉诚","你叉叉"},list1,map1); /*自定义对象的JSON字符串 与 JSON对象 正反序列化*/ //JSON字符串 转 JSON对象 // {"age":25,"birthday":1656210000000,"email":"lixiaolong@qq.com","id":1,"idCard":"915825095613202836","men":true,"name":"李小龙"} String jsonString1 = "{\"age\":25,\"birthday\":1656210000000,\"email\":\"lixiaolong@qq.com\",\"id\":1,\"idCard\":\"915825095613202836\",\"men\":true,\"name\":\"李小龙\"}"; // {"birthday":1656210000000,"idCard":"915825095613202836","men":true,"name":"李小龙","id":1,"age":25,"email":"lixiaolong@qq.com"} JSONObject jsonObject1 = JSON.parseObject(jsonString1); Integer id1 = jsonObject1.getInteger("id"); int id2 = jsonObject1.getIntValue("id"); int id3 = jsonObject1.getObject("id", int.class); Integer id4 = (Integer) jsonObject1.get("id"); int id5 = (int) jsonObject1.get("id"); String name1 = jsonObject1.getString("name"); String name2 = jsonObject1.getObject("name", String.class); String name3 = (String) jsonObject1.get("name"); Date birthday1 = jsonObject1.getDate("birthday"); //JSON对象 转 JSON字符串 // {"birthday":1656210000000,"idCard":"915825095613202836","men":true,"name":"李小龙","id":1,"age":25,"email":"lixiaolong@qq.com"} String jsonString01 = JSONObject.toJSONString(jsonObject1); //JSON对象 转 java对象 // Student{People{idCard='915825095613202836'}, id=1, name='李小龙', isMen=true, age=25, email='lixiaolong@qq.com', birthday='Sun Jun 26 10:20:00 CST 2022'} Student javaObject01 = jsonObject1.toJavaObject(Student.class); /*Map对象的JSON字符串 与 Map对象 正反序列化*/ //JSON字符串 转 JSON对象 // {"key1":{"age":25,"birthday":1656210000000,"email":"lixiaolong@qq.com","id":1,"idCard":"915825095613202836","men":true,"name":"李小龙"}, // "key2":{"age":100,"birthday":1656220000000,"email":"4848438@qq.com","id":2,"idCard":"985025033313262858","men":true,"name":"李嘉诚"}, // "key3":{"age":333,"birthday":1656230000000,"email":"nixx@qq.com","id":3,"idCard":"912655095693206526","name":"你叉叉"}} String jsonString2 = "{\"key1\":{\"age\":25,\"birthday\":1656210000000,\"email\":\"lixiaolong@qq.com\",\"id\":1,\"idCard\":\"915825095613202836\",\"men\":true,\"name\":\"李小龙\"}," + "\"key2\":{\"age\":100,\"birthday\":1656220000000,\"email\":\"4848438@qq.com\",\"id\":2,\"idCard\":\"985025033313262858\",\"men\":true,\"name\":\"李嘉诚\"}," + "\"key3\":{\"age\":333,\"birthday\":1656230000000,\"email\":\"nixx@qq.com\",\"id\":3,\"idCard\":\"912655095693206526\",\"name\":\"你叉叉\"}}"; JSONObject jsonObject2 = JSON.parseObject(jsonString2); JSONObject jsonObject21 = jsonObject2.getJSONObject("key1"); Integer id6 = jsonObject21.getInteger("id"); String name4 = jsonObject1.getString("name"); Date birthday2 = jsonObject21.getDate("birthday"); //JSON对象 转 JSON字符串 // {"key1":{"age":25,"birthday":1656210000000,"email":"lixiaolong@qq.com","id":1,"idCard":"915825095613202836","men":true,"name":"李小龙"}, // "key2":{"age":100,"birthday":1656220000000,"email":"4848438@qq.com","id":2,"idCard":"985025033313262858","men":true,"name":"李嘉诚"}, // "key3":{"age":333,"birthday":1656230000000,"email":"nixx@qq.com","id":3,"idCard":"912655095693206526","name":"你叉叉"}} String jsonString02 = JSONObject.toJSONString(jsonObject2); //JSON对象 转 java对象 // {"key1":{"age":25,"birthday":1656210000000,"email":"lixiaolong@qq.com","id":1,"idCard":"915825095613202836","men":true,"name":"李小龙"}, // "key2":{"age":100,"birthday":1656220000000,"email":"4848438@qq.com","id":2,"idCard":"985025033313262858","men":true,"name":"李嘉诚"}, // "key3":{"age":333,"birthday":1656230000000,"email":"nixx@qq.com","id":3,"idCard":"912655095693206526","name":"你叉叉"}} Map<String,Student> map01 = jsonObject2.toJavaObject(new TypeReference<Map<String,Student>>() {}); /*List对象的JSON字符串 与 Map对象 正反序列化*/ //JSON字符串 转 JSON对象 // [{"age":25,"birthday":1656210000000,"email":"lixiaolong@qq.com","id":1,"idCard":"915825095613202836","men":true,"name":"李小龙"}, // {"age":100,"birthday":1656220000000,"email":"4848438@qq.com","id":2,"idCard":"985025033313262858","men":true,"name":"李嘉诚"}, // {"age":333,"birthday":1656230000000,"email":"nixx@qq.com","id":3,"idCard":"912655095693206526","name":"你叉叉"}] String jsonString3 = "[{\"age\":25,\"birthday\":1656210000000,\"email\":\"lixiaolong@qq.com\",\"id\":1,\"idCard\":\"915825095613202836\",\"men\":true,\"name\":\"李小龙\"}," + "{\"age\":100,\"birthday\":1656220000000,\"email\":\"4848438@qq.com\",\"id\":2,\"idCard\":\"985025033313262858\",\"men\":true,\"name\":\"李嘉诚\"}," + "{\"age\":333,\"birthday\":1656230000000,\"email\":\"nixx@qq.com\",\"id\":3,\"idCard\":\"912655095693206526\",\"name\":\"你叉叉\"}]"; // [{"birthday":1656210000000,"idCard":"915825095613202836","men":true,"name":"李小龙","id":1,"age":25,"email":"lixiaolong@qq.com"}, // {"birthday":1656220000000,"idCard":"985025033313262858","men":true,"name":"李嘉诚","id":2,"age":100,"email":"4848438@qq.com"}, // {"birthday":1656230000000,"idCard":"912655095693206526","name":"你叉叉","id":3,"age":333,"email":"nixx@qq.com"}] JSONArray jsonArray1 = JSONObject.parseArray(jsonString3); // {"birthday":1656210000000,"idCard":"915825095613202836","men":true,"name":"李小龙","id":1,"age":25,"email":"lixiaolong@qq.com"} JSONObject jsonObject3 = jsonArray1.getJSONObject(0); // {"birthday":1656210000000,"idCard":"915825095613202836","men":true,"name":"李小龙","id":1,"age":25,"email":"lixiaolong@qq.com"} JSONObject jsonObject03 = (JSONObject) jsonArray1.get(0); Integer id7 = jsonObject3.getInteger("id"); String name5 = jsonObject3.getString("name"); Date birthday3 = jsonObject3.getDate("birthday"); //JSON对象 转 JSON字符串 // [{"birthday":1656210000000,"idCard":"915825095613202836","men":true,"name":"李小龙","id":1,"age":25,"email":"lixiaolong@qq.com"}, // {"birthday":1656220000000,"idCard":"985025033313262858","men":true,"name":"李嘉诚","id":2,"age":100,"email":"4848438@qq.com"}, // {"birthday":1656230000000,"idCard":"912655095693206526","name":"你叉叉","id":3,"age":333,"email":"nixx@qq.com"}] String jsonString03 = JSONObject.toJSONString(jsonArray1); //JSON对象 转 java对象 // [Student{People{idCard='915825095613202836'}, id=1, name='李小龙', isMen=true, age=25, email='lixiaolong@qq.com', birthday='Sun Jun 26 10:20:00 CST 2022'}, // Student{People{idCard='985025033313262858'}, id=2, name='李嘉诚', isMen=true, age=100, email='4848438@qq.com', birthday='Sun Jun 26 13:06:40 CST 2022'}, // Student{People{idCard='912655095693206526'}, id=3, name='你叉叉', isMen=null, age=333, email='nixx@qq.com', birthday='Sun Jun 26 15:53:20 CST 2022'}] List<Student> list01 = jsonArray1.toJavaObject(new TypeReference<List<Student>>() {}); /*自定义复杂对象的JSON字符串 与 JSON对象 正反序列化*/ //JSON字符串 转 JSON对象 // {"advantage":["李小龙","李嘉诚","你叉叉"], // "age":99,"id":1, // "idCard":"915964265816522636", // "intimacyMap": // {"key1":{"age":25,"birthday":1656210000000,"email":"lixiaolong@qq.com","id":1,"idCard":"915825095613202836","men":true,"name":"李小龙"}, // "key2":{"age":100,"birthday":1656220000000,"email":"4848438@qq.com","id":2,"idCard":"985025033313262858","men":true,"name":"李嘉诚"}, // "key3":{"age":333,"birthday":1656230000000,"email":"nixx@qq.com","id":3,"idCard":"912655095693206526","name":"你叉叉"}}, // "myChild":{"$ref":"$.intimacyMap.key1"}, // "name":"孔子", // "taughtStudentList": // [{"$ref":"$.intimacyMap.key1"},{"$ref":"$.intimacyMap.key2"},{"$ref":"$.intimacyMap.key3"}]} String jsonString4 = "{\"advantage\":[\"李小龙\",\"李嘉诚\",\"你叉叉\"]," + "\"age\":99," + "\"id\":1," + "\"idCard\":\"915964265816522636\"," + "\"intimacyMap\":" + "{\"key1\":{\"age\":25,\"birthday\":1656210000000,\"email\":\"lixiaolong@qq.com\",\"id\":1,\"idCard\":\"915825095613202836\",\"men\":true,\"name\":\"李小龙\"}," + "\"key2\":{\"age\":100,\"birthday\":1656220000000,\"email\":\"4848438@qq.com\",\"id\":2,\"idCard\":\"985025033313262858\",\"men\":true,\"name\":\"李嘉诚\"}," + "\"key3\":{\"age\":333,\"birthday\":1656230000000,\"email\":\"nixx@qq.com\",\"id\":3,\"idCard\":\"912655095693206526\",\"name\":\"你叉叉\"}}," + "\"myChild\":{\"$ref\":\"$.intimacyMap.key1\"}," + "\"name\":\"孔子\"," + "\"taughtStudentList\":" + "[{\"$ref\":\"$.intimacyMap.key1\"},{\"$ref\":\"$.intimacyMap.key2\"},{\"$ref\":\"$.intimacyMap.key3\"}]}"; JSONObject jsonObject4 = JSONObject.parseObject(jsonString4); JSONObject jsonObject41 = jsonObject4.getJSONObject("intimacyMap"); JSONObject jsonObject411 = jsonObject41.getJSONObject("key1"); Integer id8 = jsonObject411.getInteger("id"); String name6 = jsonObject411.getString("name"); Date birthday4 = jsonObject411.getDate("birthday"); //JSON对象 转 JSON字符串 // {"myChild":{"birthday":1656210000000,"idCard":"915825095613202836","men":true,"name":"李小龙","id":1,"age":25,"email":"lixiaolong@qq.com"}, // "advantage":["李小龙","李嘉诚","你叉叉"], // "idCard":"915964265816522636", // "name":"孔子", // "intimacyMap":{"key1":{"$ref":"$.myChild"}, // "key2":{"birthday":1656220000000,"idCard":"985025033313262858","men":true,"name":"李嘉诚","id":2,"age":100,"email":"4848438@qq.com"}, // "key3":{"birthday":1656230000000,"idCard":"912655095693206526","name":"你叉叉","id":3,"age":333,"email":"nixx@qq.com"}}, // "id":1, // "taughtStudentList":[{"$ref":"$.myChild"},{"$ref":"$.intimacyMap.key2"},{"$ref":"$.intimacyMap.key3"}],"age":99} String jsonString04 = JSONObject.toJSONString(jsonObject4); //JSON对象 转 java对象 // Teacher{id=1, // name='孔子', // age=99, // myChild=Student{People{idCard='915825095613202836'}, // id=1, // name='李小龙', // isMen=true, // age=25, // email='lixiaolong@qq.com', // birthday='Sun Jun 26 10:20:00 CST 2022'}, // advantage=[李小龙, 李嘉诚, 你叉叉], // taughtStudentList= // [Student{People{idCard='915825095613202836'}, id=1, name='李小龙', isMen=true, age=25, email='lixiaolong@qq.com', birthday='Sun Jun 26 10:20:00 CST 2022'}, // Student{People{idCard='985025033313262858'}, id=2, name='李嘉诚', isMen=true, age=100, email='4848438@qq.com', birthday='Sun Jun 26 13:06:40 CST 2022'}, // Student{People{idCard='912655095693206526'}, id=3, name='你叉叉', isMen=null, age=333, email='nixx@qq.com', birthday='Sun Jun 26 15:53:20 CST 2022'}], // intimacyMap= // {key1=Student{People{idCard='915825095613202836'}, id=1, name='李小龙', isMen=true, age=25, email='lixiaolong@qq.com', birthday='Sun Jun 26 10:20:00 CST 2022'}, // key2=Student{People{idCard='985025033313262858'}, id=2, name='李嘉诚', isMen=true, age=100, email='4848438@qq.com', birthday='Sun Jun 26 13:06:40 CST 2022'}, // key3=Student{People{idCard='912655095693206526'}, id=3, name='你叉叉', isMen=null, age=333, email='nixx@qq.com', birthday='Sun Jun 26 15:53:20 CST 2022'}}} Teacher javaObject04 = jsonObject4.toJavaObject(Teacher.class); } }
3.3. 定制序列化(使用方法)
package com.ggh.study; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.NameFilter; import com.alibaba.fastjson.serializer.SerializeFilter; import com.alibaba.fastjson.serializer.SerializerFeature; import java.util.ArrayList; import java.util.Collections; import java.util.Date; import java.util.List; public class FastJsonStudy3 { public static void main(String[] args) { Student javaObject1 = new Student(null,null,null,null,null,null,null); Student javaObject2 = new Student("985025033313262858",2,null,true,100,"4848438@qq.com",new Date(1656220000000L)); Student javaObject3 = new Student("912655095693206526",3,"你叉叉",true,null,"nixx@qq.com",new Date(1656230000000L)); Student javaObject4 = new Student("965255059693206853",4,"哈啊哈",null,512,"qiongkaixin@qq.com",new Date(1656240000000L)); Student javaObject5 = new Student("951455059333205624",5,"咕噜噜",true,124,"gulugulu@qq.com",new Date(1656250000000L)); Student javaObject6 = new Student("951455059333232549",5,"咔嚓嚓",true,985,"kachakacha@qq.com",new Date(1656260000000L)); List<Student> list1 = new ArrayList<>(); Collections.addAll(list1,javaObject2,javaObject2); /*定制序列化 默认序列化时null值对应键值对会舍去,日期会以格林威治毫秒值显示*/ // 定制null值对应键值对保留 默认情况下null值对应的键值对会被舍去 // {"age":null,"birthday":null,"email":null,"id":null,"idCard":null,"men":null,"name":null} String jsonString1 = JSONObject.toJSONString(javaObject1, SerializerFeature.WriteMapNullValue); // 定制String类型的键对应的null值转为空串"" // {"age":100,"birthday":1656220000000,"email":"4848438@qq.com","id":2,"idCard":"985025033313262858","men":true,"name":""} String jsonString2 = JSONObject.toJSONString(javaObject2, SerializerFeature.WriteNullStringAsEmpty); // 定制数值包装类型的键对应的null值转为0 // {"age":0,"birthday":1656230000000,"email":"nixx@qq.com","id":3,"idCard":"912655095693206526","men":true,"name":"你叉叉"} String jsonString3 = JSONObject.toJSONString(javaObject3, SerializerFeature.WriteNullNumberAsZero); // 定制Boolean键对应的null值转为false // {"age":512,"birthday":1656240000000,"email":"qiongkaixin@qq.com","id":4,"idCard":"965255059693206853","men":false,"name":"哈啊哈"} String jsonString4 = JSONObject.toJSONString(javaObject4, SerializerFeature.WriteNullBooleanAsFalse); // 定制序列化输出日期的格式 // 设置定制默认日期格式 JSONObject.DEFFAULT_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss.SSS E"; //年-月-日 时:分:秒.毫秒 星期 // {"age":124,"birthday":"2022-06-26 21:26:40.000 星期日","email":"gulugulu@qq.com","id":5,"idCard":"951455059333205624","men":true,"name":"咕噜噜"} String jsonString5 = JSONObject.toJSONString(javaObject5, SerializerFeature.WriteDateUseDateFormat); //使用定制默认日期格式 定制默认≠默认 // 还原定制默认日期格式 JSONObject.DEFFAULT_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss"; // 定制美化序列化格式 // { // "age":985, // "birthday":1656260000000, // "email":"kachakacha@qq.com", // "id":5, // "idCard":"951455059333232549", // "men":true, // "name":"咔嚓嚓" // } String jsonString6 = JSONObject.toJSONString(javaObject6,true); // 定制完整输出序列化 默认情况下会将重复的对象以引用方式输出[{"age":100,"birthday":1656220000000,"email":"4848438@qq.com","id":2,"idCard":"985025033313262858","men":true},{"$ref":"$[0]"}] // [{"age":100,"birthday":1656220000000,"email":"4848438@qq.com","id":2,"idCard":"985025033313262858","men":true}, // {"age":100,"birthday":1656220000000,"email":"4848438@qq.com","id":2,"idCard":"985025033313262858","men":true}] String jsonString7 = JSONObject.toJSONString(list1, SerializerFeature.DisableCircularReferenceDetect); // 定制序列化键名 SerializeFilter nameFilter = new NameFilter() { @Override public String process(Object object, String name, Object value) { // 将键名序列化为大写 return name.toUpperCase(); } }; // [{"AGE":100,"BIRTHDAY":1656220000000,"EMAIL":"4848438@qq.com","ID":2,"IDCARD":"985025033313262858","MEN":true},{"$ref":"$[0]"}] String jsonString8 = JSONObject.toJSONString(list1, nameFilter); // 多个定制序列化可连用 JSONObject.toJSONString(javaObject2, SerializerFeature.WriteNullStringAsEmpty, SerializerFeature.WriteNullNumberAsZero); } }
4. 定制序列化(使用注解)
package com.ggh.study; import com.alibaba.fastjson.annotation.JSONField; import com.alibaba.fastjson.annotation.JSONType; import com.alibaba.fastjson.serializer.SerializerFeature; import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; public class People { private String idCard; //身份证号 public People() { } public People(String idCard) { this.idCard = idCard; } public String getIdCard() { return idCard; } public void setIdCard(String idCard) { this.idCard = idCard; } @Override public String toString() { return "People{" + "idCard=" + (idCard==null?"":'\'') + idCard + (idCard==null?"":'\'') + '}'; } } class Student extends People{ @JSONField(serialzeFeatures=SerializerFeature.WriteNullNumberAsZero) //serialzeFeatures=SerializerFeature.WriteNullNumberAsZero定制当id的值为null时序列化后值为0,serialzeFeatures可接收的其他值的含义参考单对象序列化 private Integer id; @JSONField(name="studentName", ordinal=2) //name指定序列化后键的名称和正反序列化前键应为的名称 private String name; private Boolean isMen; @JSONField(/*指定该字段是否序列化*/serialize = false, /*指定该字段是否反序列化*/deserialize = false) private Integer age; @JSONField(ordinal=1) //ordinal指定序列化后此键值对的先后顺序,越小越靠前,默认ordinal=0, ordinal<0时不起效 private String email; @JSONField(format="YYYY-MM-dd HH:mm:ss.SSS E") //format="YYYY-MM-dd HH:mm:ss.SSS E"指定序列化后日期的格式为 年-月-日 时:分:秒.毫秒 星期 private Date birthday; public Student() { } public Student(Integer id, String name, Boolean isMen, Integer age, String email, Date birthday) { this.id = id; this.name = name; this.isMen = isMen; this.age = age; this.email = email; this.birthday = birthday; } public Student(String idCard, Integer id, String name, Boolean isMen, Integer age, String email, Date birthday) { super(idCard); this.id = id; this.name = name; this.isMen = isMen; this.age = age; this.email = email; this.birthday = birthday; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Boolean getMen() { return isMen; } public void setMen(Boolean men) { isMen = men; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } @Override public String toString() { return "Student{" + super.toString() + ", id=" + id + ", name=" + (name==null?"":'\'') + name + (name==null?"":'\'') + ", isMen=" + isMen + ", age=" + age + ", email=" + (email==null?"":'\'') + email + (email==null?"":'\'') + ", birthday=" + (birthday==null?"":'\'') + birthday + (birthday==null?"":'\'') + '}'; } } @JSONType(includes = {"id","Student","taughtStudentList"}, orders = {"Student","id","taughtStudentList"}) //includes指定需要序列化的字段,orders指定序列化后各键值对的顺序 class Teacher extends People{ private Integer id; private String name; private Integer age; private Student myChild; //我的孩子 private String[] advantage; //优点 private List<Student> taughtStudentList; //教过的学生 private Map<String, Student> intimacyMap; //与各学生的亲密等级 public Teacher() { } public Teacher(Integer id, String name, Integer age, Student myChild, String[] advantage, List<Student> taughtStudentList, Map<String, Student> intimacyMap) { this.id = id; this.name = name; this.age = age; this.myChild = myChild; this.advantage = advantage; this.taughtStudentList = taughtStudentList; this.intimacyMap = intimacyMap; } public Teacher(String idCard, Integer id, String name, Integer age, Student myChild, String[] advantage, List<Student> taughtStudentList, Map<String, Student> intimacyMap) { super(idCard); this.id = id; this.name = name; this.age = age; this.myChild = myChild; this.advantage = advantage; this.taughtStudentList = taughtStudentList; this.intimacyMap = intimacyMap; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Student getMyChild() { return myChild; } public void setMyChild(Student myChild) { this.myChild = myChild; } public String[] getAdvantage() { return advantage; } public void setAdvantage(String[] advantage) { this.advantage = advantage; } public List<Student> getTaughtStudentList() { return taughtStudentList; } public void setTaughtStudentList(List<Student> taughtStudentList) { this.taughtStudentList = taughtStudentList; } public Map<String, Student> getIntimacyMap() { return intimacyMap; } public void setIntimacyMap(Map<String, Student> intimacyMap) { this.intimacyMap = intimacyMap; } @Override public String toString() { return "Teacher{" + "id=" + id + ", name=" + (name==null?"":'\'') + name + (name==null?"":'\'') + ", age=" + age + ", myChild=" + myChild + ", advantage=" + Arrays.toString(advantage) + ", taughtStudentList=" + taughtStudentList + ", intimacyMap=" + intimacyMap + '}'; } }
package com.ggh.study; import com.alibaba.fastjson.JSONObject; import java.util.ArrayList; import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; public class FastJsonStudy4 { public static void main(String[] args) { Student javaObject1 = new Student("915825095613202836",1,"李小龙",true,25,"lixiaolong@qq.com",new Date(1656210000000L)); Student javaObject2 = new Student("985025033313262858",2,"李嘉诚",true,100,"4848438@qq.com",new Date(1656220000000L)); Student javaObject3 = new Student("912655095693206526",3,"你叉叉",null,333,"nixx@qq.com",new Date(1656230000000L)); List<Student> list1 = new ArrayList<Student>(); Collections.addAll(list1,javaObject1,javaObject2,javaObject3); Map<String,Student> map1 = new HashMap<String, Student>(); map1.put("key1",javaObject1); map1.put("key2",javaObject2); map1.put("key3",javaObject3); Teacher JavaObject4 = new Teacher("915964265816522636",1,"孔子",99,javaObject1,new String[]{"李小龙","李嘉诚","你叉叉"},list1,map1); /*测试@JSONField*/ // {"birthday":"2022-06-26 10:20:00.000 星期日","id":1,"idCard":"915825095613202836","men":true,"email":"lixiaolong@qq.com","studentName":"李小龙"} String jsonString1 = JSONObject.toJSONString(javaObject1); // Student{People{idCard='915825095613202836'}, id=1, name='李小龙', isMen=true, age=null, email='lixiaolong@qq.com', birthday='Sun Dec 26 10:20:00 CST 2021'} Student javaObject01 = JSONObject.parseObject(jsonString1, Student.class); /*测试@JSONType*/ // {"id":1, // "taughtStudentList": // [{"birthday":"2022-06-26 10:20:00.000 星期日","id":1,"idCard":"915825095613202836","men":true,"email":"lixiaolong@qq.com","studentName":"李小龙"}, // {"birthday":"2022-06-26 13:06:40.000 星期日","id":2,"idCard":"985025033313262858","men":true,"email":"4848438@qq.com","studentName":"李嘉诚"}, // {"birthday":"2022-06-26 15:53:20.000 星期日","id":3,"idCard":"912655095693206526","email":"nixx@qq.com", // "studentName":"你叉叉"}]} String jsonString4 = JSONObject.toJSONString(JavaObject4); // Teacher{id=1, // name=null, // age=null, // myChild=null, // advantage=null, // taughtStudentList= // [Student{People{idCard='915825095613202836'}, id=1, name='李小龙', isMen=true, age=null, email='lixiaolong@qq.com', birthday='Sun Dec 26 10:20:00 CST 2021'}, // Student{People{idCard='985025033313262858'}, id=2, name='李嘉诚', isMen=true, age=null, email='4848438@qq.com', birthday='Sun Dec 26 13:06:40 CST 2021'}, // Student{People{idCard='912655095693206526'}, id=3, name='你叉叉', isMen=null, age=null, email='nixx@qq.com', birthday='Sun Dec 26 15:53:20 CST 2021'}], // intimacyMap=null} Teacher jsonObject04 = JSONObject.parseObject(jsonString4,Teacher.class); } }

浙公网安备 33010602011771号