目录
1、Gson简介
Gson(又称Google Gson)是Google公司发布的一个开放源代码的Java库,其主要用途为序列化Java对象为JSON字符串,或反序列化JSON字符串成Java对象。
Gson是目前功能最强的JSON解析器之一,并且不需要依赖额外的Jar包,能够直接运行在JAVA平台。相对于FastJson,更能准确的转换复杂的Bean。

2、Json简介
一般来说如果你要使用Gson,那么你肯定对json有所了解,为了防止意外,让我们再来讲解一下这个编程世界的交流货币——JSON数据。

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,具有易读易写的特点,广泛应用于Web开发和数据传输领域。与 XML 相比,它不那么冗长且更具可读性,人类很容易读写,机器也很容易解析和生成。
JSON起源于JavaScript语言,但已成为一种独立于编程语言的数据格式。它由键值对组成,类似于JavaScript中的对象,但更加简洁和通用化。JSON数据以文本形式存储,易于解析和生成,因此被广泛应用于数据交换和存储。
JSON的数据由键值对组成,每个键值对之间用逗号分隔,{ }包裹表示一个对象,[ ]包裹表示一个数组,这是最基本的数据结构,了解这个基本上就差不多了。例如下面:
[
{
"name": "Mike",
"age": 30,
"city": "New York"
},
{
"name": "Tom",
"age": 18,
"city": "Londom"
}
]
JSON的内容很简单,但作为一个编程世界里的货币,在数据传输过程中,如何对其进行转换是一个很普遍的问题。
3、Gson快速上手
3.0、导入依赖
目前最新版本是2.11.0,我们选择2.10.1版本,在pom文件中添加Maven的Gson依赖,我们前面提到过,Gson是不依赖其他Jar包的。
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.10.1</version>
</dependency>
3.1、创建Gson对象
3.1.1 new Gson()
Gson gson = new Gson();
3.1.2 GsonBuilder.build()
GsonBuilder builder = new GsonBuilder();
Gson gson = builder.create();
3.2、对象--->Json
People P1=new People("菠萝吹雪",15,"黑龙江");
People P2=new People("橙留香",16,"上海");
Gson gson=new GsonBuilder()
.setPrettyPrinting()
.create();
String P11=gson.toJson(P1);
String P21=gson.toJson(P2);
System.out.println(P11);
System.out.println(P21);
注意: .setPrettyPrinting() 方法是为了让 JSON格式输出的更美观,这也是Gson的一大优点。
控制台输出结果如下:
{
"name": "菠萝吹雪",
"age": 15,
"city": "黑龙江"
}
{
"name": "橙留香",
"age": 16,
"city": "上海"
}
3.3、Json--->对象
String jsonP1="{\n" +
" \"name\": \"菠萝吹雪\",\n" +
" \"age\": 15,\n" +
" \"city\": \"黑龙江\"\n" +
"}";
String jsonP2="{\n" +
" \"name\": \"橙留香\",\n" +
" \"age\": 16,\n" +
" \"city\": \"上海\"\n" +
"}";
Gson gson=new Gson();
People people1 = gson.fromJson(jsonP1, People.class);
People people2 = gson.fromJson(jsonP2, People.class);
System.out.println(people1);
System.out.println(people2);
控制台输入如下:
People(name=菠萝吹雪, age=15, city=黑龙江)
People(name=橙留香, age=16, city=上海)
此时这里从JSON字符串转换成了对应的People对象
3.4、List集合转换
List与Json之间的互相转换:
void test03(){
List<People> peopleList=new ArrayList<>();
peopleList.add(new People("菠萝吹雪",15,"黑龙江"));
peopleList.add(new People("橙留香",16,"上海"));
Gson gson=new GsonBuilder()
.setPrettyPrinting()
.create();
//将List转化为Json对象
String listjson = gson.toJson(peopleList);
System.out.println(listjson);
//将Json对象转化为List对象
List<People> PeopleList = gson.fromJson(listjson, new TypeToken<List<People>>() {}.getType());
System.out.println(PeopleList);
}
控制台输出如下:
[
{
"name": "菠萝吹雪",
"age": 15,
"city": "黑龙江"
},
{
"name": "橙留香",
"age": 16,
"city": "上海"
}
]
[People(name=菠萝吹雪, age=15, city=黑龙江), People(name=橙留香, age=16, city=上海)]
3.4、Map集合转换
转换Map的步骤和转换List的步骤一模一样,代码如下:
Map<String,People>map=new HashMap<>();
map.put("people1",new People("菠萝吹雪",15,"黑龙江"));
map.put("people2",new People("橙留香",16,"上海"));
Gson gson=new GsonBuilder()
.setPrettyPrinting()
.create();
String mapJson = gson.toJson(map);
System.out.println(mapJson);
Map<String,People>jsonMap = gson.fromJson(mapJson, new TypeToken<Map<String, People>>() {}.getType());
System.out.println(jsonMap);
控制台输出如下:
{
"people1": {
"name": "菠萝吹雪",
"age": 15,
"city": "黑龙江"
},
"people2": {
"name": "橙留香",
"age": 16,
"city": "上海"
}
}
{people1=People(name=菠萝吹雪, age=15, city=黑龙江), people2=People(name=橙留香, age=16, city=上海)}
4、结语
OK这次到这里就结束了,想要了解更多可以访问官网https://github.com/google/gson。
下次再见!
1196

被折叠的 条评论
为什么被折叠?



