一、什么是json?

JSON是一种轻量级的数据交换格式。

二、json数据格式

2.1 JSON数组格式

json的数据本身是数组,中括号包裹,数组的元素之间逗号分开,数组元素的数据类型没有限制

fastjson序列化和反序列化(JSON序列化和反序列化)(1)

[{ "userccount":"admin", "password":"123456" },{ "userccount":"zhangsan", "password":"123456" }]

2.2 JSON对象格式

json的数据本身是对象,大括号包裹,对象采用键值对形式存储,键固定为字符串类型,值是任意类型的数据,键和值使用冒号分开。

fastjson序列化和反序列化(JSON序列化和反序列化)(2)

{ "userccount":"admin", "password":"123456" }

三、FastJson介绍

FastJson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以将JSON字符串反序列化到JAVA Bean。是一种json转换工具

序列化(JAVA对象转换为JSON格式字符串):

3.1 JAVA对象转换为JSON字符串

fastjson序列化和反序列化(JSON序列化和反序列化)(3)

//准备一个JAVA对象 @Data public class Student { private Integer id; private String name; private Integer age; } //JAVA对象转为JSON格式字符串 public static void main(String[] args) { //JAVA对象 Student student = new Student(); student.setId(1); student.setName("张三"); student.setAge(20); //转换为JSON格式字符串 String jsonString = JSON.toJSONString(student); System.out.println(jsonString); } 打印: {"age":20,"id":1,"name":"张三"}

3.2 List集合转换为JSON字符串

fastjson序列化和反序列化(JSON序列化和反序列化)(4)

public static void main(String[] args) { //定义一个list List<Student> list=new ArrayList<>(); Student student = new Student(); student.setId(1); student.setName("张三"); student.setAge(20); Student student2 = new Student(); student2.setId(2); student2.setName("李四"); student2.setAge(22); list.add(student); list.add(student2); //转换为 String jsonString = JSON.toJSONString(list); System.out.println(jsonString); } 打印: [{"age":20,"id":1,"name":"张三"},{"age":22,"id":2,"name":"李四"}]

3.3 MAP集合转换为JSON字符串

fastjson序列化和反序列化(JSON序列化和反序列化)(5)

public static void main(String[] args) { //定义一个Map Map<String,Student> map=new HashMap<>(); List<Student> list=new ArrayList<>(); Student student = new Student(); student.setId(1); student.setName("张三"); student.setAge(20); Student student2 = new Student(); student2.setId(2); student2.setName("李四"); student2.setAge(22); map.put("student",student); map.put("student2",student2); //转换为 String jsonString = JSON.toJSONString(map); System.out.println(jsonString); } 打印: {"student":{"age":20,"id":1,"name":"张三"},"student2":{"age":22,"id":2,"name":"李四"}}

反序列化(JSON格式字符串转换为JAVA对象):

3.4 JSON字符串转换为JAVA对象

fastjson序列化和反序列化(JSON序列化和反序列化)(6)

public static void main(String[] args) { String jsonstring="{\"age\":20,\"id\":1,\"name\":\"张三\"}"; Student student= JSON.parseObject(jsonstring,Student.class); System.out.println(student); } 打印: Student(id=1, name=张三, age=20)

3.5 JSON字符串转换为List集合

fastjson序列化和反序列化(JSON序列化和反序列化)(7)

public static void main(String[] args) { String jsonstring="[{\"age\":20,\"id\":1,\"name\":\"张三\"},{\"age\":22,\"id\":2,\"name\":\"李四\"}]"; List<Student> students = JSON.parseArray(jsonstring, Student.class); for(Student student:students){ System.out.println(student); } } 打印: Student(id=1, name=张三, age=20) Student(id=2, name=李四, age=22)

3.6 JSON字符串转换为MAP集合

fastjson序列化和反序列化(JSON序列化和反序列化)(8)

public static void main(String[] args) { //定义1个json字符串 String jsonstring="{\"student\":{\"age\":20,\"id\":1,\"name\":\"张三\"},\"student2\":{\"age\":22,\"id\":2,\"name\":\"李四\"}}"; //直接进行反序列化,Map集合没有泛型,泛型没有是不安全的集合 //Map map=JSON.parseObject(jsonstring); //转后的集合,必须有泛型 //调用parseObject,传递参数,TypeReference类型,在TypeReference类的泛型中,传递转后的Map集合 Map<String,Student > map=JSON.parseObject(jsonstring,new TypeReference<Map<String,Student>>(){}); for(String key:map.keySet()){ System.out.println(map.get(key)); } } 打印: Student(id=1, name=张三, age=20) Student(id=2, name=李四, age=22)

,