详解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.Id());
}
}
结果:
10
将JSON字符串转换为Map集合
注意:
当JSON中存在数组格式的键值对时,数组格式的键值对转换为最终结果为List类型
public class toMap{
public static void main(String[] args) {
//1. 创建Gson对象
json值的类型有哪些Gson g = new Gson();
//2. 转换
HashMap data = g.fromJson("{\"id\":\"10\",\"name\":\"⾃控⼒\",\"info\":\"如何提升⾃控⼒\", \"page\":[\"时间管控⽅式\",\"⾃我暗⽰法\"]}"HashMap.class); List page=(List) ("page");
System.out.("id"));
System.out.("1"));
}
}
运⾏结果:
10
时间管控⽅式
FastJson
FastJson是阿⾥提供的⽤来在Java对象和JSON数据之间进⾏映射的Java类库。
将Java对象转换为JSON字符串
步骤:
1.引⼊JAR包
2.在需要转换的JSON字符串的位置编写如下代码即可:
相⽐Gson FastJson不需要创建新的对象
String json = JSONString(需要转换的对象);
将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的⽣成与解析内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论