JSON的介绍:JSON有两种表示结构,对象和数组。
对象结构以”{”大括号开始,以”}”大括号结束。中间部分由0或多个以”,”分隔的”key(关键字)/value(值)”对构成,关键字和值之间以”:”分隔,语法结构如代码。
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
public class SchoolStudent {
private Integer id;
private String name;
private Integer age;
private String email;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
public class SchoolStu {
private Integer id;
private String name;
private Integer age;
}
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class Demo1 {
private String id;
private String name;
private String age;
@JSONField(format = "yyyy-MM-dd")
private Date date;
}
@Data
public class Demo2 {
private String id;
@JSONField(name="name")
private String userName;
private String age;
@JSONField(name="date")
private Date userDate;
}
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Demo3 {
private String id;
private String name;
private String age;
@JSONField(serialize=false,deserialize=false)
private Date date;
}
public class TestJsonFast {
/**
* 测试json对象
*/
@Test
public void Test1() {
SchoolStudent s1 = new SchoolStudent(1,"张三",12,"11@qq.com");
// 对象转换为json
String s = JSON.toJSONString(s1);
System.out.println(s); // {"age":12,"email":"11@qq.com","id":1,"name":"张三"}
// json转换为对象
SchoolStu schoolStu = JSON.parseObject(s, SchoolStu.class);
System.out.println(schoolStu); // SchoolStu(id=1, name=张三, age=12)
}
/**
* 测试map
*/
@Test
public void Test2() {
HashMap<String,String> map = new HashMap<>();
map.put("id","111");
map.put("name","zhagnsan");
map.put("age","24");
map.put("email","34@qq.com");
// map转化为JSON
String s = JSON.toJSONString(map);
System.out.println(s); // {"name":"zhagnsan","id":"111","age":"24","email":"34@qq.com"}
// json转换为map
Map<String, String> map1 = JSON.parseObject(s, new TypeReference<Map<String, String>>() {});
System.out.println(map1); // {name=zhagnsan, id=111, age=24, email=34@qq.com}
SchoolStudent schoolStudent = JSON.parseObject(s, SchoolStudent.class);
System.out.println(schoolStudent); // SchoolStudent(id=111, name=zhagnsan, age=24, email=34@qq.com)
}
/**
* 测试list数组
*/
@Test
public void Test3() {
SchoolStudent s1 = new SchoolStudent(1,"张三",12,"11@qq.com");
SchoolStudent s2 = new SchoolStudent(2,"李四",9,"31@qq.com");
SchoolStudent s3 = new SchoolStudent(3,"王五",16,"41@qq.com");
SchoolStudent s4 = new SchoolStudent(4,"赵六",5,"99@qq.com");
List<SchoolStudent> schoolStudents = Arrays.asList(s1, s2, s3, s4);
// list集合转化为json
String s = JSON.toJSONString(schoolStudents);
System.out.println(s); // [{"age":12,"email":"11@qq.com","id":1,"name":"张三"},
// {"age":9,"email":"31@qq.com","id":2,"name":"李四"},
// {"age":16,"email":"41@qq.com","id":3,"name":"王五"},
// {"age":5,"email":"99@qq.com","id":4,"name":"赵六"}]
// json转换为list
List<SchoolStu> schoolStus = JSON.parseArray(s, SchoolStu.class);
List<SchoolStudent> students = JSON.parseArray(s, SchoolStudent.class);
System.out.println(students); // [SchoolStudent(id=1, name=张三, age=12, email=11@qq.com),
// SchoolStudent(id=2, name=李四, age=9, email=31@qq.com),
// SchoolStudent(id=3, name=王五, age=16, email=41@qq.com),
// SchoolStudent(id=4, name=赵六, age=5, email=99@qq.com)]
System.out.println(schoolStus); // [SchoolStu(id=1, name=张三, age=12),
// SchoolStu(id=2, name=李四, age=9),
// SchoolStu(id=3, name=王五, age=16),
// SchoolStu(id=4, name=赵六, age=5)]
}
/**
* JSONField 注解 命名重塑
*/
@Test
public void Test4() {
Demo1 demo1 = new Demo1("1","zhangsan","12",new Date());
Demo1 demo2 = new Demo1("2","lisi","22",new Date());
List<Demo1> demo1s = Arrays.asList(demo1, demo2);
String s = JSON.toJSONString(demo1s);
List<Demo2> demo2s = JSON.parseArray(s, Demo2.class);
System.out.println(s);
System.out.println(demo2s);
}
/**
* 序列号,反序列化,指定字段长度
* serialize属性:控制序列化
* deserialize属性:控制反序列化
* ordinal属性:指定字段的顺序
*/
@Test
public void Test5() {
Demo3 demo1 = new Demo3("1","zhangsan","12",new Date());
Demo3 demo2 = new Demo3("2","lisi","22",new Date());
List<Demo3> demo3s = Arrays.asList(demo1, demo2);
String s = JSON.toJSONString(demo3s);
List<Demo3> demo3s1 = JSON.parseArray(s, Demo3.class);
System.out.println(s); // [{"age":"12","id":"1","name":"zhangsan"},{"age":"22","id":"2","name":"lisi"}]
System.out.println(demo3s1); // [Demo3(id=1, name=zhangsan, age=12, date=null), Demo3(id=2, name=lisi, age=22, date=null)]
}
}