* 谷歌开原项目GitHub地址:https://github.com/google/gson

1.新建一个maven项目,引入gson的dependency坐标依赖以及commons-io的坐标:

        <!--处理json格式数据-->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.4</version>
</dependency> <!--做io文件的操作-->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>

2.编写一个Student 的JavaBean:

package com.wxd.basic.gson;

import java.util.Arrays;

public class Student {
private String name;
private Integer age;
private String birthday;
private String[] major;
private boolean has_girl_friend;
private String car;
private String house;
private String comment; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Integer getAge() {
return age;
} public void setAge(Integer age) {
this.age = age;
} public String getBirthday() {
return birthday;
} public void setBirthday(String birthday) {
this.birthday = birthday;
} public String[] getMajor() {
return major;
} public void setMajor(String[] major) {
this.major = major;
} public boolean isHas_girl_friend() {
return has_girl_friend;
} public void setHas_girl_friend(boolean has_girl_friend) {
this.has_girl_friend = has_girl_friend;
} public String getCar() {
return car;
} public void setCar(String car) {
this.car = car;
} public String getHouse() {
return house;
} public void setHouse(String house) {
this.house = house;
} public String getComment() {
return comment;
} public void setComment(String comment) {
this.comment = comment;
} @Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", birthday='" + birthday + '\'' +
", major=" + Arrays.toString(major) +
", has_girl_friend=" + has_girl_friend +
", car='" + car + '\'' +
", house='" + house + '\'' +
", comment='" + comment + '\'' +
'}';
}
}

3.编写GsonSample解析类

package com.wxd.basic.gson;

import com.google.gson.FieldNamingStrategy;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder; import java.lang.reflect.Field; public class GsonSample {
public static void main(String[] args){
Student s=new Student();
s.setName("张三");
s.setAge(23);
s.setBirthday("1995-06-30");
s.setMajor(new String[]{"打球","看书"});
s.setHas_girl_friend(false);
s.setCar(null);
s.setHouse(null);
s.setComment("这是一个注释!"); GsonBuilder gsonBuilder=new GsonBuilder();
  //gsonBuilder.setDateFormat("yyyy-MM-dd").create();日期格式转换
gsonBuilder.setPrettyPrinting();//这样设置后通过GsonBuilder构建的Gson对象打印出来是美化过的json格式数据
gsonBuilder.setFieldNamingStrategy(new FieldNamingStrategy() {
@Override
public String translateName(Field field) {
if(field.getName().equals("name")){
return "NAME";//修改了name属性
}
return field.getName();
}
});
Gson gson=gsonBuilder.create();
// Gson gson=new Gson();
System.out.println(gson.toJson(s));
}
}

4.控制台输出

①通过new Gson()的方式构建后的打印输出:
{"name":"张三","age":23,"birthday":"1995-06-30","major":["打球","看书"],"has_girl_friend":false,"comment":"这是一个注释!"}
②通过GsonBuilder的方式构建Gson对象后输出:

{
  "NAME": "张三",
  "age": 23,
  "birthday": "1995-06-30",
  "major": [
     "打球",
    "看书"
  ],
  "has_girl_friend": false,
  "comment": "这是一个注释!"
  }

5.使用Gson解析json格式数据:

package com.wxd.basic.gson;

import com.google.gson.Gson;
import org.apache.commons.io.FileUtils; import java.io.File;
import java.io.IOException; public class GsonReadSample {
public static void main(String[] args){
File file=new File(GsonReadSample.class.getResource("/Student.json").getFile());
try {
String content = FileUtils.readFileToString(file);//如果不知道怎么读文件可以自己手动写个json字符串如下(把这行注释掉,下面的放开就行):
// String content="{\n" +
// " \"NAME\": \"张三\",\n" +
// " \"age\": 23,\n" +
// " \"birthday\": \"1995-06-30\",\n" +
// " \"major\": [\n" +
// " \"打球\",\n" +
// " \"看书\"\n" +
// " ],\n" +
// " \"has_girl_friend\": false,\n" +
// " \"comment\": \"这是一个注释!\"\n" +
// "}";
Gson gson=new Gson();
Student student = gson.fromJson(content, Student.class);
System.out.println(student);
} catch (IOException e) {
e.printStackTrace();
}
}
}

6.控制台输出:

Student{name='null', age=23, birthday='1995-06-30', major=[打球, 看书], has_girl_friend=false, car='null', house='null', comment='这是一个注释!'}

Google开源GSON的使用的更多相关文章

  1. [Android]Google 开源的 Android 排版库:FlexboxLayout

    最近Google开源了一个项目叫「FlexboxLayout」. 1.什么是 Flexbox 简单来说 Flexbox 是属于web前端领域CSS的一种布局方案,是2009年W3C提出了一种新的布局方 ...

  2. Google开源SLAM软件cartographer中使用的UKF滤波器解析

    在Google开源SLAM软件cartographer中,相对<SLAM for dummies>使用了更为复杂.性能更好的Scan匹配与UKF算法,这里简单介绍下cartographer ...

  3. 人工智能系统Google开源的TensorFlow官方文档中文版

    人工智能系统Google开源的TensorFlow官方文档中文版 2015年11月9日,Google发布人工智能系统TensorFlow并宣布开源,机器学习作为人工智能的一种类型,可以让软件根据大量的 ...

  4. 利用中文数据跑Google开源项目word2vec

    一直听说word2vec在处理词与词的相似度的问题上效果十分好,最近自己也上手跑了跑Google开源的代码(https://code.google.com/p/word2vec/). 1.语料 首先准 ...

  5. [转]玩转Google开源C++单元测试框架Google Test系列

    gtest的官方网站是: http://code.google.com/p/googletest/ 从官方的使用文档里,你几乎可以获得你想要的所有东西 http://code.google.com/p ...

  6. gRPC:Google开源的基于HTTP/2和ProtoBuf的通用RPC框架

    gRPC:Google开源的基于HTTP/2和ProtoBuf的通用RPC框架 gRPC:Google开源的基于HTTP/2和ProtoBuf的通用RPC框架 Google Guava官方教程(中文版 ...

  7. 转:玩转Google开源C++单元测试框架Google Test系列

    转自http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html 前段时间学习和了解了下Google的开源C++单元测试框架Google ...

  8. 玩转Google开源C++单元测试框架Google Test系列(转载)

    越来越多公司采用敏捷开发,单元和回归测试越来越重要,GTest作为最佳C++单元测试工具越来越多的被使用.转自 http://www.cnblogs.com/coderzh/archive/2009/ ...

  9. Google开源的Deep-Learning项目word2vec

    用中文把玩Google开源的Deep-Learning项目word2vec   google最近新开放出word2vec项目,该项目使用deep-learning技术将term表示为向量,由此计算te ...

随机推荐

  1. OJ:奇怪的类复制

    描述 程序填空,使其输出9 22 5 #include <iostream> using namespace std; class Sample { public: int v; // 在 ...

  2. (3)编译安装lamp三部曲之php-技术流ken

    简介 php是服务器端脚本语言,我们需要使用它来提供动态的网页.接下来就来编译安装php吧. 系统环境及服务版本 centos7.5 服务器IP:172.20.10.7/28 libmcrypt-de ...

  3. linux学习基础1

    简介 包含计算机组成,发行.核心思想.主要目录,一些命令ifconfig.echo.tty.startx.export.pwd.history.shutdown.poweroff.reboot.hwc ...

  4. 【译】微型ORM:PetaPoco

    PetaPoco是一款适用于.Net 和Mono的微小.快速.单文件的微型ORM. PetaPoco有以下特色: 微小,没有依赖项……单个的C#文件可以方便的添加到任何项目中. 工作于严格的没有装饰的 ...

  5. 安装PyCharm

    安装包下载 本文以CentOS上PyCharm安装为例来介绍,安装包的下载地址:https://www.jetbrains.com/pycharm/download/ 官网提供了windows,mac ...

  6. vue(三)-父子组件通信

    原因 :  Vue 的组件作用域都是孤立的,不允许在子组件的模板内直接引用父组件的数据.必须使用特定的方法才能实现组件之间的数据传递. props  父组件给子组件传递数据 props:作用是父组件给 ...

  7. 网页字体在Frontpage2000制作网页中的讲解

    运用HTML,我们可以对字体的大小及字形进行简单的修改,但要进行统一地控制.创建特殊效果,就必须要用到CSS.它能让您更有效地控制网页外观,并可以扩充精确指定网页元素位置,外观以及创建特殊效果的能力. ...

  8. 2017-11-07 中文代码示例之Angular入门教程尝试

    "中文编程"知乎专栏原址 原文: 中文代码示例教程之Angular尝试 为了检验中文命名在Angular中的支持程度, 把Angular官方入门教程的示例代码中尽量使用了中文命名. ...

  9. MongoDB 3.0 WT引擎参考配置文件

    单实例: systemLog: destination: file ###日志存储位置 path: /data/mongodb/log/mongod.log logAppend: true stora ...

  10. 如何用ABP框架快速完成项目(13) - 用ABP遇到难题项目受阻时如何避免项目延迟

    只有一个人在开发ABP, 遇到难题时可以: 最根本的, 简化问题, 不要盖楼式结构 前端优先用VSCode看文档, 后端看官网文档. 看ABP源码/issues 到QQ群和微信群里寻求外援.   我建 ...