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)
推荐阅读
-
洗衣机不脱水了是怎么回事(洗衣机不甩干的处理方法)
洗衣机作为大家日常生活必备的家用电器,其利用率频繁,难免会因为机械磨损、缺乏润滑油、机件老化、弹簧疲劳变形等原因,出现各种不正...
-
电子表格零基础自学教程(小白也能学明白)
可能很多人(包括我)觉得Excel不就是做个表吗,没什么好学的。然而很多大型企业在面试的时候还是会问,“会Excel吗?”“会...
-
笔记本电脑报价大全(联想笔记本多少钱)
(注意:建议在旗舰店、官方旗舰店、官网购买) 一、游戏本设计本、办公本推荐如下: 华为品牌:(全球第一大电信设备商) 1...
-
煲机软件哪个好(让耳机有个思想准备)
《无间道》中陈永仁与刘建明有过一句经典对白&mdash;&mdash;“高音甜、中音准、低音沉,总之一个词通透”。这一句话也一...
-
viewsonic平板电脑(viewsonic平板电脑刷机)
ViewSonic是一个视讯品牌,中文名字:优派。 ViewSonic 一、读音:英[vju:][?s?n?k],美[vj...
-
采访麦克风户外哪款好(讯飞智能无线麦克风C1采访神器)
对于视频创作者、直播工作者、远程培训老师、记者等媒体工作者来说,工作过程中,最让人费心的莫过于如何确保收音纯正、字幕快速生成、...
-
电脑硬件配置怎么查(详述两招快速查看电脑配置参数信息)
大家好,今天跟大家分享两个快速查看电脑配置参数信息的办法。 操作步骤如下: 1右击电脑屏幕最下方任务栏左侧的电脑徽标按钮,...
-
数据线没坏但充不上电怎么办(数据线充不上电处理方法)
苹果充电器突然充不上电是比较尴尬的问题,首先看自己的充电器数据线是不是原装,如果非原装在第一次充电时,苹果手机会提示你是否要适...
-
电脑开机出现黑屏如何处理(电脑不能开机黑屏解决方法)
电脑不能开机或者开机以后黑屏怎么解决?这里收集了所有常见的维修方法,看完秒变维修高手,实在是一篇不能错过的电脑维修教程。简单易...
-
手机宝典怎么搞(小米手机性能优化宝典)
别再总是抱怨手机卡顿,系统臃肿,反应慢,现在看完这篇文章,你会发现你并不了解小米手机,当然,文中许多方法并不是仅仅适用于小米手...