JSON序列化和反序列化(json数据字符串格式)

一、什么是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对象@DatapublicclassStudent { privateInteger id; privateStringname; privateInteger age; } //JAVA对象转为JSON格式字符串publicstaticvoidmain(String[] args) { //JAVA对象Student student = newStudent(); student.setId(1); student.setName("张三"); student.setAge(20); //转换为JSON格式字符串StringjsonString = JSON.toJSONString(student); System.out.println(jsonString); } 打印: {"age":20,"id":1,"name":"张三"}

3.2 List集合转换为JSON字符串

publicstaticvoidmain(String[] args){ //定义一个listList<Student> list=newArrayList<>(); Student student = newStudent(); student.setId(1); student.setName("张三"); student.setAge(20); Student student2 = newStudent(); 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字符串

publicstaticvoidmain(String[] args){ //定义一个MapMap<String,Student> map=newHashMap<>(); List<Student> list=newArrayList<>(); Student student = newStudent(); student.setId(1); student.setName("张三"); student.setAge(20); Student student2 = newStudent(); 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对象

publicstaticvoidmain(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集合

publicstaticvoidmain(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 staticvoidmain(String[] args) { //定义1个json字符串Stringjsonstring="{\"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,newTypeReference<Map<String,Student>>(){}); for(Stringkey:map.keySet()){ System.out.println(map.get(key)); } } 打印: Student(id=1, name=张三, age=20) Student(id=2, name=李四, age=22)

发布于 2022-09-09 22:12:05
收藏
分享
海报
0 条评论
209
上一篇:聚酯纤维主要指什么面料(聚酯纤维是什么面料优缺点) 下一篇:自动扣款关闭方法图解(ipad取消自动续费订阅服务)
目录

    推荐阅读

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码