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

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

  1. <!--处理json格式数据-->
  2. <dependency>
  3. <groupId>com.google.code.gson</groupId>
  4. <artifactId>gson</artifactId>
  5. <version>2.4</version>
  6. </dependency>
  7.  
  8. <!--做io文件的操作-->
  9. <dependency>
  10. <groupId>commons-io</groupId>
  11. <artifactId>commons-io</artifactId>
  12. <version>2.4</version>
  13. </dependency>

2.编写一个Student 的JavaBean:

  1. package com.wxd.basic.gson;
  2.  
  3. import java.util.Arrays;
  4.  
  5. public class Student {
  6. private String name;
  7. private Integer age;
  8. private String birthday;
  9. private String[] major;
  10. private boolean has_girl_friend;
  11. private String car;
  12. private String house;
  13. private String comment;
  14.  
  15. public String getName() {
  16. return name;
  17. }
  18.  
  19. public void setName(String name) {
  20. this.name = name;
  21. }
  22.  
  23. public Integer getAge() {
  24. return age;
  25. }
  26.  
  27. public void setAge(Integer age) {
  28. this.age = age;
  29. }
  30.  
  31. public String getBirthday() {
  32. return birthday;
  33. }
  34.  
  35. public void setBirthday(String birthday) {
  36. this.birthday = birthday;
  37. }
  38.  
  39. public String[] getMajor() {
  40. return major;
  41. }
  42.  
  43. public void setMajor(String[] major) {
  44. this.major = major;
  45. }
  46.  
  47. public boolean isHas_girl_friend() {
  48. return has_girl_friend;
  49. }
  50.  
  51. public void setHas_girl_friend(boolean has_girl_friend) {
  52. this.has_girl_friend = has_girl_friend;
  53. }
  54.  
  55. public String getCar() {
  56. return car;
  57. }
  58.  
  59. public void setCar(String car) {
  60. this.car = car;
  61. }
  62.  
  63. public String getHouse() {
  64. return house;
  65. }
  66.  
  67. public void setHouse(String house) {
  68. this.house = house;
  69. }
  70.  
  71. public String getComment() {
  72. return comment;
  73. }
  74.  
  75. public void setComment(String comment) {
  76. this.comment = comment;
  77. }
  78.  
  79. @Override
  80. public String toString() {
  81. return "Student{" +
  82. "name='" + name + '\'' +
  83. ", age=" + age +
  84. ", birthday='" + birthday + '\'' +
  85. ", major=" + Arrays.toString(major) +
  86. ", has_girl_friend=" + has_girl_friend +
  87. ", car='" + car + '\'' +
  88. ", house='" + house + '\'' +
  89. ", comment='" + comment + '\'' +
  90. '}';
  91. }
  92. }

3.编写GsonSample解析类

  1. package com.wxd.basic.gson;
  2.  
  3. import com.google.gson.FieldNamingStrategy;
  4. import com.google.gson.Gson;
  5. import com.google.gson.GsonBuilder;
  6.  
  7. import java.lang.reflect.Field;
  8.  
  9. public class GsonSample {
  10. public static void main(String[] args){
  11. Student s=new Student();
  12. s.setName("张三");
  13. s.setAge(23);
  14. s.setBirthday("1995-06-30");
  15. s.setMajor(new String[]{"打球","看书"});
  16. s.setHas_girl_friend(false);
  17. s.setCar(null);
  18. s.setHouse(null);
  19. s.setComment("这是一个注释!");
  20.  
  21. GsonBuilder gsonBuilder=new GsonBuilder();
      //gsonBuilder.setDateFormat("yyyy-MM-dd").create();日期格式转换
  22. gsonBuilder.setPrettyPrinting();//这样设置后通过GsonBuilder构建的Gson对象打印出来是美化过的json格式数据
  23. gsonBuilder.setFieldNamingStrategy(new FieldNamingStrategy() {
  24. @Override
  25. public String translateName(Field field) {
  26. if(field.getName().equals("name")){
  27. return "NAME";//修改了name属性
  28. }
  29. return field.getName();
  30. }
  31. });
  32. Gson gson=gsonBuilder.create();
  33. // Gson gson=new Gson();
  34. System.out.println(gson.toJson(s));
  35. }
  36. }

4.控制台输出

  1. ①通过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格式数据:

  1. package com.wxd.basic.gson;
  2.  
  3. import com.google.gson.Gson;
  4. import org.apache.commons.io.FileUtils;
  5.  
  6. import java.io.File;
  7. import java.io.IOException;
  8.  
  9. public class GsonReadSample {
  10. public static void main(String[] args){
  11. File file=new File(GsonReadSample.class.getResource("/Student.json").getFile());
  12. try {
  13. String content = FileUtils.readFileToString(file);//如果不知道怎么读文件可以自己手动写个json字符串如下(把这行注释掉,下面的放开就行):
  14. // String content="{\n" +
  15. // " \"NAME\": \"张三\",\n" +
  16. // " \"age\": 23,\n" +
  17. // " \"birthday\": \"1995-06-30\",\n" +
  18. // " \"major\": [\n" +
  19. // " \"打球\",\n" +
  20. // " \"看书\"\n" +
  21. // " ],\n" +
  22. // " \"has_girl_friend\": false,\n" +
  23. // " \"comment\": \"这是一个注释!\"\n" +
  24. // "}";
  25. Gson gson=new Gson();
  26. Student student = gson.fromJson(content, Student.class);
  27. System.out.println(student);
  28. } catch (IOException e) {
  29. e.printStackTrace();
  30. }
  31. }
  32. }

6.控制台输出:

  1. 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. Python机器学习笔记 使用sklearn做特征工程和数据挖掘

    特征处理是特征工程的核心部分,特征工程是数据分析中最耗时间和精力的一部分工作,它不像算法和模型那样式确定的步骤,更多的是工程上的经验和权衡,因此没有统一的方法,但是sklearn提供了较为完整的特征处 ...

  2. XtraDB/InnoDB的文件格式(已提交到MariaDB官方手册)

    本文为mariadb官方手册:XtraDB/InnoDB File Format的译文. 原文:https://mariadb.com/kb/en/library/xtradbinnodb-file- ...

  3. zabbix实现百台服务器的自动化监控--技术流ken

    前言 最近有小伙伴通过Q联系到我说:公司现在有百多台服务器,想要部署zabbix进行监控,怎么实现自动化全网监控? 本篇博客将讲解一个我工作时做的一个实际项目,现在写出来供大家以后参考使用. 实现自动 ...

  4. SQLite占用资源少原因

    本篇承接上篇SQLite详解的下篇,介绍SQLIte为什么占用资源少的原因?本文主要参考https://blog.csdn.net/hanyingzhong/article/details/46400 ...

  5. CentOS 7.4 64位安装配置MySQL8.0

    第一步:获取mysql YUM源 进入mysql官网获取RPM包下载地址 https://dev.mysql.com/downloads/repo/yum/   image.png 点击下载   im ...

  6. pycharm破解

    链接: https://share.weiyun.com/5DGGG3J (密码:hQq6) 将JetbrainsCrack-2.6.10-release-enc.jar放D盘1.pycharm下bi ...

  7. echarts画图时tooltip.formatter参数params不会更新(转载)

    echarts画图时tooltip.formatter参数params不会更新 解决方案: setOption时默认是合并, 如果要全部重新加载 要写成 setOption({},true),这样就可 ...

  8. springboot之scheduled任务调度

    springboot整合Scheduled可以方便的进行任务调度,话不多说,直接上代码 package com.rookie.bigdata; import org.springframework.b ...

  9. VS2017 docker部署工具的使用

    **简要描述:** - VS2017的docker支持工具,支持对.Net Framework,.Net Core控制台或者Web应用,在docker中生成,调试,运行.对于.Net Framewor ...

  10. 导入MySQL数据库提示"Unknown character set: 'utf8mb4'"错误

      错误提示:导入MySQL数据库提示"Unknown character set: 'utf8mb4'"错误   分析: 看来是因为数据库版本的问题导致的,之前网站MYSQL5. ...