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-libraryEnter 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 字符串