JSON数据处理
JSON数据处理
1.json的数据格式
1.1 数组格式
Title
1.2 对象格式
Title
1.3 数据嵌套对象
json数据的嵌套
1.4 对象嵌套数据
Title
1.5 json嵌套
json数据的嵌套
2.fastjson
它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到Java Bean。
@Data
public class Student {
private Integer id;
private String name;
private Integer age;
private String email;
private Date birthday;
}
2.1 Java对象序列化到Json
//java中的对象,Student对象,序列化Json格式字符串
@Test
public void testObjectToJson(){
Student student = new Student();
student.setId(1);
student.setName("张三");
student.setAge(20);
student.setEmail("zs@163.com");
student.setBirthday(getDate());
//student对象转成json格式的字符串
//调用静态方法,传递要抓换的对象
String jsonString = JSON.toJSONString(student);
System.out.println(jsonString);
//{"age":20,"birthday":1629451099346,"email":"zs@163.com","id":1,"name":"张三"}
}
{
"age":20,
"birthday":1629451099346,
"email":"zs@163.com",
"id":1,
"name":"张三"
}
//java中的集合List,序列化为Json格式字符串
@Test
public void testListToJson(){
//集合List,存储Student对象
ArrayList list = new ArrayList<>();
Student student1 = new Student();
student1.setId(1);
student1.setName("张三");
student1.setAge(20);
student1.setEmail("zs@163.com");
student1.setBirthday(getDate());
Student student2 = new Student();
student2.setId(2);
student2.setName("赵四");
student2.setAge(25);
student2.setEmail("zs1@163.com");
student2.setBirthday(getDate());
//student对象存储到集合中
list.add(student1);
list.add(student2);
//List集合,序列化为Json格式字符串
String jsonString = JSON.toJSONString(list);
System.out.println(jsonString);
//转后的结果是数组,数组的元素是对象
//[{"age":20,"birthday":1629451016542,"email":"zs@163.com","id":1,"name":"张三"},
// {"age":25,"birthday":1629451016542,"email":"zs1@163.com","id":2,"name":"赵四"}]
}
[
{"age":20,"birthday":1629451016542,"email":"zs@163.com","id":1,"name":"张三"},
{"age":25,"birthday":1629451016542,"email":"zs1@163.com","id":2,"name":"赵四"}
]
//java中的集合Map,序列化为Json格式字符串
@Test
public void testMapToJson(){
//创建map集合,键为字符串类型,值为Student对象
HashMap map = new HashMap<>();
Student student1 = new Student();
student1.setId(1);
student1.setName("张三");
student1.setAge(20);
student1.setEmail("zs@163.com");
student1.setBirthday(getDate());
Student student2 = new Student();
student2.setId(2);
student2.setName("赵四");
student2.setAge(25);
student2.setEmail("zs1@163.com");
student2.setBirthday(getDate());
//Map集合存储Student对象
map.put("student1",student1);
map.put("student2",student2);
String jsonString = JSON.toJSONString(map);
System.out.println(jsonString);
//json格式字符串是对象,对象中有两个键,键对应的值是Student对象
//{"student2":{"age":25,"birthday":1629451782886,"email":"zs1@163.com","id":2,"name":"赵四"},
// "student1":{"age":20,"birthday":1629451782886,"email":"zs@163.com","id":1,"name":"张三"}}
}
{
"student2":{"age":25,"birthday":1629451782886,"email":"zs1@163.com","id":2,"name":"赵四"},
"student1":{"age":20,"birthday":1629451782886,"email":"zs@163.com","id":1,"name":"张三"}
}
2.2 Json反序列化到java对象
//Json格式字符串,反序列化到Java对象
@Test
public void testJsonToObject(){
String jsonString = "{\"age\":20,\"birthday\":1629451099346,\"email\":\"zs@163.com\",\"id\":1,\"name\":\"张三\"}";
//Json类的静态方法 parseObject
//传递要反序列化的Json字符串,传递Java对象的class对象
Student student=JSON.parseObject(jsonString,Student.class);
System.out.println(student);
}
//Json格式字符串,反序列化到List集合
@Test
public void testJsonToList(){
String jsonString = "[{\"age\":20,\"birthday\":1629451016542,\"email\":\"zs@163.com\",\"id\":1,\"name\":\"张三\"},\n" +
" {\"age\":25,\"birthday\":1629451016542,\"email\":\"zs1@163.com\",\"id\":2,\"name\":\"赵四\"}]";
//Json类的静态方法 parseArray
//传递Json格式的字符串,传递转换后的集合的泛型的class对象
List list = JSON.parseArray(jsonString, Student.class);
list.forEach(System.out::println);
}
//Json格式字符串,反序列化到Map集合
@Test
public void testJsonToMap(){
String jsonString = "{\"student2\":{\"age\":25,\"birthday\":1629455067665,\"email\":\"zs1@163.com\",\"id\":2,\"name\":\"赵四\"}," +
"\"student1\":{\"age\":20,\"birthday\":1629455067665,\"email\":\"zs@163.com\",\"id\":1,\"name\":\"张三\"}}";
//json类的静态方法,parseObject
//直接进行反序列化,Map集合是没有泛型的,泛型没有事不安全的
//转后的集合,必须有泛型
//调用parseObject,传递参数,TypeReference类型
//将Map中所有的键存入到set集合中。因为set具备迭代器。所有可以迭代方式取出所有的键,再根据get方法。获取每一个键对应的值。
//keySet():迭代后只能通过get()取key
Map map = JSON.parseObject(jsonString, new TypeReference
原文:https://www.cnblogs.com/annuusl/p/15167841.html