本篇文章小编给大家分享一下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);
忍者必须死34399账号登录版 最新版v1.0.138v2.0.72
下载勇者秘境oppo版 安卓版v1.0.5
下载忍者必须死3一加版 最新版v1.0.138v2.0.72
下载绝世仙王官方正版 最新安卓版v1.0.49
下载Goat Simulator 3手机版 安卓版v1.0.8.2
Goat Simulator 3手机版是一个非常有趣的模拟游
Goat Simulator 3国际服 安卓版v1.0.8.2
Goat Simulator 3国际版是一个非常有趣的山羊模
烟花燃放模拟器中文版 2025最新版v1.0
烟花燃放模拟器是款仿真的烟花绽放模拟器类型单机小游戏,全方位
我的世界动漫世界 手机版v友y整合
我的世界动漫世界模组整合包是一款加入了动漫元素的素材整合包,
我的世界贝爷生存整合包 最新版v隔壁老王
我的世界MITE贝爷生存整合包是一款根据原版MC制作的魔改整