Google GSON 基础教程 - Hello World
有时候我也很无奈,为什么 IT 技术的任何教程,或者任何工具,首先要做的,就是输出 Hello World
。 我不止一次问过自己这个傻逼的问题,也在一次一次的从别人的教程中一遍又一遍的输出 Hello World
。
直到有一天,我被一个巨型的项目难住了,这是别人写的,离职后我接手维护的项目。
光是环境配置,就耗费了一天,还没解决。也就是说,在那个项目中,我连输出 Hello World
项目的机会都没有。
本文,并不是一个正常的标准的规范的 Hello World。 如果你使用任何 Java IDE,比如 Android Studio 或者 IDEA 全称 ( IntelliJ IDEA) 或者 Eclipse ,那么写一个 Google GSON 远远比这个本文简单。
作为基础项目,本系列教程所有接下来的项目都会以本文为基础创建
Gradle + Sublime Text 3 + Google GSON 项目
在本站的所有教程中,我不止一次提到作者我使用的编辑器是 Sublime Text 3 ,因此我的 Hello Google GSON 项目就要自己手动生成了。
在我们继续之前,我们假设你已经正确安装了 Java 环境和 Gradle 构建工具
-
创建项目目录
HelloGSON
在你的项目目录下新建一个目录
HelloGSON
,用于保存所有 Hello Google GSON 项目文件mkdir HelloGSON cd HelloGSON
-
进入到
HelloGSON
目录后,我们使用gradle init
命令来创建项目gradle init
输入命令然后按下回车键后,会弹出项目类型选择
Select type of project to generate: 1: basic 2: groovy-application 3: groovy-library 4: java-application 5: java-library 6: kotlin-application 7: kotlin-library 8: scala-library
Enter selection (default: basic) [1..8]
-
因为我们需要一个完整的 Java 应用程序,所以,输入
4
然后按回车键然后会弹出 gradle 配置语言选择
Select build script DSL: 1: groovy 2: kotlin Enter selection (default: groovy) [1..2]
如果你对 kotlin 语言熟悉,可以输入 2 ,因为作者对 groovy 的配置语言比较熟悉,所以直接按下回车了
-
然后弹出的是测试框架选择,我们的教程,并不是一个什么大型的目录,所以直接回车即可
Select test framework: 1: junit 2: testng 3: spock Enter selection (default: junit) [1..3]
-
接下来弹出的是项目的名字,这个直接回车就好,也就是项目名字和目录名字是一样的
Project name (default: HelloGSON):
-
接下来的项目的包名,默认的包名太傻了,我们就输入
cn.twle.json
作为包名吧Source package (default: HelloGSON): cn.twle.gson
-
按下回车后,项目就构建完成了
BUILD SUCCESSFUL in 7m 20s 2 actionable tasks: 2 executed
项目结构
经过简单几个步骤,我们的 HelloGSON 项目就创建完成了,完整的目录结构如下
tree . . ├── build.gradle ├── gradle │ └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── settings.gradle └── src ├── main │ ├── java │ │ └── cn │ │ └── twle │ │ └── gson │ │ └── App.java │ └── resources └── test ├── java │ └── cn │ └── twle │ └── gson │ └── AppTest.java └── resources 15 directories, 8 files
我们可以打开 App.java
文件,看看内容如何
/* * This Java source file was generated by the Gradle 'init' task. */ package cn.twle.gson; public class App { public String getGreeting() { return "Hello world."; } public static void main(String[] args) { System.out.println(new App().getGreeting()); } }
运行项目
这个默认的项目是可以运行的,我们可以直接输入 gradle run
命令来运行
gradle run > Task :run Hello world. BUILD SUCCESSFUL in 0s 2 actionable tasks: 2 executed
通过结果中的 Hello World
可以看到,项目运行正常
添加 Google GSON 类库
打开 build.gradle
文件,内容如下
plugins { id 'java' id 'application' } repositories { jcenter() } dependencies { implementation 'com.google.guava:guava:26.0-jre' testImplementation 'junit:junit:4.12' } mainClassName = 'cn.twle.gson.App'
为了节省空间,注释被我删了
然后在 dependencies
节点里的添加 Google GSON
,添加完成后,内容如下
plugins { id 'java' id 'application' } repositories { jcenter() } dependencies { implementation 'com.google.guava:guava:26.0-jre' implementation 'com.google.code.gson:gson:2.8.5' testImplementation 'junit:junit:4.12' } mainClassName = 'cn.twle.gson.App'
然后运行 gradle build
构建项目,这个动作会自动下载 Google GSON
编辑 App.java
文件完善 Hello Google GSON
打开我们的 App.java
文件
-
首先,创建一个 Java 对象
为了简单起见,我们并不遵循标准的 JavaBean 或 POJO 的类创建,而是直接把公开属性
class Greeting { public String msg; }
-
其次,导入 Google GSON 生成和解析 JSON 所需要的类
import com.google.gson.Gson;
-
然后,在
main
方法中实例化一个Greeting
对象Greeting hello = new Greeting(); hello.msg = "Hello Google GSON";
-
接着,实例化一个
Gson
对象Gson gson = new Gson();
-
最后,调用
gson
对象的toJson()
方法将 Java 对象 hello 生成为 JSON 字符串String rs = gson.toJson(hello);
-
最后把结果输出到屏幕
System.out.println(rs);
完成上面这些步骤后,完整的 App.java
文件源码如下
/* * This Java source file was generated by the Gradle 'init' task. */ package cn.twle.gson; import com.google.gson.Gson; class Greeting { public String msg; } public class App { public String getGreeting() { return "Hello world."; } public static void main(String[] args) { Greeting hello = new Greeting(); hello.msg = "Hello Google GSON"; Gson gson = new Gson(); String rs = gson.toJson(hello); System.out.println(rs); } }
然后,使用 gradle run
命令来运行项目
gradle run
输出结果如下
> Task :run {"msg":"Hello Google GSON"} BUILD SUCCESSFUL in 0s 2 actionable tasks: 2 executed
可以看到,正确的输出了我们想要的 JSON 字符串