详解Java中JSON数据的生成与解析
一、什么是JSON
JSON: JavaScript Object Notation JS对象简谱,是一种类似于XML的语言。相比于XML,它更小、更快、更易解析。主要用于项目前端和Server的网络数据传输。
二、JSON的语法
对象
一个对象,由一个大括号表示{},{}中通过一个个的键值对来描述对象的属性
注意:
键与值之间使用冒号连接,多个键值对之间使用逗号分隔。
键值对的键,应使用引号引住(通常Java解析时,键不使用引号会报错,而JS能正确解析);键值对的值,可以是JS中的任意数据类型
格式:
{
键1:值1,
键2:值2,
.
.
}
案例:使用JSON描述一本书,属性: 书名、简介
{ "name":"自控力", "info":"如何提升自己的自控力" }
数组格式
[]表示数组,在JSON中,数组可以与对象互相嵌套
格式:
[元素1,元素2,…]
案例:
{
“name”:[“自控力”,“浪潮之巅”]
}
三、JSON与Java对象之间的相互转换
JSON和Java对象之间的转换目前主要是通过引用Gson类库或者FastJson类库来进行操作
Gson
Gson是Google提供的用来在Java对象和JSON数据之间进行映射的Java类库。可以将一个Java对象转换为JSON字符串,也可以将一个JSON字符串转换为一个Java对象。
将Java对象转换为JSON字符串 步骤:
1.引入JAR包
2.在需要转换的JSON字符串的位置编写如下代码即可:
String json = new Gson().toJSON(需要转换的对象);
案例:
编写一个Book对象类
public class Book { private String id; private String name; private String info; @Override public String toString() { return "Book{" + "id='" + id + '\'' + ", name='" + name + '\'' + ", info='" + info + '\'' + '}'; } public Book(String id, String name, String info) { this.id = id; this.name = name; this.info = info; } public Book() { } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Book book = (Book) o; return Objects.equals(id, book.id) && Objects.equals(name, book.name) && Objects.equals(info, book.info); } @Override public int hashCode() { return Objects.hash(id, name, info); } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getInfo() { return info; } public void setInfo(String info) { this.info = info; } }
将Book对象转化为JSON
public class toJSON { public static void main(String[] args) { //1. 创建Gson对象 Gson g = new Gson(); //2. 转换 Book b = new Book("10","自控力","如何提升自控力"); String s = g.toJson(b); System.out.println(s); } } 输出结过为: {"id":"10","name":"自控力","info":"如何提升自控力"}
将JSON字符串转换为一个Java对象
1.引入JAR包
2.在需要转换的Java对象的位置编写如下代码即可:
对象=new Gson().fromJson(JSON字符串,对象类型.class);
注意:
当转换的Java对象不包含JSON字符串中的属性时,转换过程中可能会出现属性丢失的情况。解决办法:转换为Map集合
案例:
将JSON字符串转换为Book对象
public class toBook { public static void main(String[] args) { //1. 创建Gson对象 Gson g = new Gson(); //2. 转换 : {"id":"10","name":"自控力","info":"如何提升自控力"} Book b = g.fromJson("{\"id\":\"10\",\"name\":\"自控力\",\"info\":\"如何提升自控力\"}", Book.class); System.out.println(b.getId()); } } 结果: 10
将JSON字符串转换为Map集合
注意:
当JSON中存在数组格式的键值对时,数组格式的键值对转换为最终结果为List类型
public class toMap{ public static void main(String[] args) { //1. 创建Gson对象 Gson g = new Gson(); //2. 转换 HashMap data = g.fromJson("{\"id\":\"10\",\"name\":\"自控力\",\"info\":\"如何提升自控力\", \"page\":[\"时间管控方式\",\"自我暗示法\"]}"HashMap.class); List page=(List) data.get("page"); System.out.println(data.get("id")); System.out.println(page.get("1")); } } 运行结果: 10 时间管控方式
FastJson
FastJson是阿里提供的用来在Java对象和JSON数据之间进行映射的Java类库。
将Java对象转换为JSON字符串
步骤:
1.引入JAR包
2.在需要转换的JSON字符串的位置编写如下代码即可:
相比Gson FastJson不需要创建新的对象
String json = JSON.toJSONString(需要转换的对象);
将JSON字符串转换为一个Java对象
步骤:
1.引入JAR包
2.在需要转换的JSON字符串的位置编写如下代码即可:
转对象
String json = JSON.parseObject(JSON字符串,类型.class);
转List
List<类型>list=JSON.parseArray(JSON字符串,类型.class);
四、总结:
JSON对于移动设备来说,尤其对于网络环境较差和流量限制的情况下,相对于XML格式的数据传输会更节省流量,传输效率更高。
参考
到此这篇关于详解Java中JSON数据的生成与解析的文章就介绍到这了,更多相关Java中JSON的生成与解析内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
将List集合中的map对象转为List<对象>形式实例代码
这篇文章主要介绍了将List集合中的map对象转为List<对象>形式实例代码,具有一定借鉴价值,需要的朋友可以参考下2018-01-01Mybatis-plus与Mybatis依赖冲突问题解决方法
,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧这篇文章主要介绍了Mybatis-plus与Mybatis依赖冲突问题解决方法2021-04-04一种新的日期处理方式之JavaScript Temporal API
JavaScript Temporal API是一种为Web开发人员提供了一种新的处理日期和时间数据类型的方式。它的目的是使操作日期和时间更加简单和可靠,而且不用担心历史时区问题或全球化协调时间(UTC)之类的问题,感兴趣的同学可以参考阅读2023-05-05解决Spring Boot 多模块注入访问不到jar包中的Bean问题
这篇文章主要介绍了解决Spring Boot 多模块注入访问不到jar包中的Bean问题。具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-09-09SpringBoot日志进阶实战之Logback配置经验和方法
本文给大家介绍在SpringBoot中使用Logback配置日志的经验和方法,并提供了详细的代码示例和解释,包括:滚动文件、异步日志记录、动态指定属性、日志级别、配置文件等常用功能,覆盖日常Logback配置开发90%的知识点,感兴趣的朋友跟随小编一起看看吧2023-06-06
最新评论