一、什么是json?
JSON是一种轻量级的数据交换格式。
二、json数据格式
2.1 JSON数组格式
json的数据本身是数组,中括号包裹,数组的元素之间逗号分开,数组元素的数据类型没有限制
[{
"userccount":"admin",
"password":"123456"
},{
"userccount":"zhangsan",
"password":"123456"
}]
2.2 JSON对象格式
json的数据本身是对象,大括号包裹,对象采用键值对形式存储,键固定为字符串类型,值是任意类型的数据,键和值使用冒号分开。
{
"userccount":"admin",
"password":"123456"
}
三、FastJson介绍
FastJson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以将JSON字符串反序列化到JAVA Bean。是一种json转换工具
序列化(JAVA对象转换为JSON格式字符串):
3.1 JAVA对象转换为JSON字符串
//准备一个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字符串
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字符串
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对象
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集合
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集合
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)