这篇文章主要讲解了“Java中JSON数据的生成与解析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java中JSON数据的生成与解析”吧!
JSON: JavaScript Object Notation JS对象简谱,是一种类似于XML的语言。相比于XML,它更小、更快、更易解析。主要用于项目前端和Server的网络数据传输。
对象
一个对象,由一个大括号表示{},{}中通过一个个的键值对来描述对象的属性
注意:
键与值之间使用冒号连接,多个键值对之间使用逗号分隔。
键值对的键,应使用引号引住(通常Java解析时,键不使用引号会报错,而JS能正确解析);键值对的值,可以是JS中的任意数据类型
格式:
{
键1:值1,
键2:值2,
.
.
}
案例:使用JSON描述一本书,属性: 书名、简介
{ "name":"自控力", "info":"如何提升自己的自控力" }
数组格式
[]表示数组,在JSON中,数组可以与对象互相嵌套
格式:
[元素1,元素2,…]
案例:
{
“name”:[“自控力”,“浪潮之巅”]
}
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数据的生成与解析这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。