返回顶部
首页 > 资讯 > 精选 >Java Json API中Gson怎么用
  • 955
分享到

Java Json API中Gson怎么用

2023-06-17 06:06:09 955人浏览 安东尼
摘要

这篇文章主要介绍了Java JSON api中Gson怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。GSON是Google开发的Java API,用于转换Java对象和

这篇文章主要介绍了Java JSON api中Gson怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

GSON是Google开发的Java API,用于转换Java对象和json对象。

下载与安装

在使用GSON API工作之前,你需要下载库(jar文件),并将其包含到类路径中。库,连同源代码和Java文档,都可以从Http://code.google.com/p/google-gson/downloads/list下载。下载完毕后,添加gson-<version>.jar到类路径。对于那些偏好使用Maven管理依赖(JAR文件)的读者,添加如下依赖到pom.xml。

<dependency>     <groupId>com.google.code.gson</groupId>     <artifactId>gson</artifactId>     <version>2.2.4</version> </dependency>

需要修改 <version>2.2.4</version>。本文所有代码示例使用上面列出的版本。pom.xml文件拷贝可以在这里找到。

如果这个库用于WEB应用,请确保在WEB-INF/lib文件夹中保持一份拷贝。或者,GSON库可以放到应用服务器提供给web应用。

一个简单示例

GSON API提供一个类文件,Gson(Java文档),它被用来处理Java和JSON对象的转换。可以调用默认构造器,或如下代码的形式,使用GsonBuilder(Java文档)类创建这个类的实例。GsonBuilder类是可定制化的,并且允许开发者按需实例化Gson。

package com.javacreed.examples.gson.part1;  import com.google.gson.Gson; import com.google.gson.GsonBuilder;  public class SimpleExample1 {     public static void main(String[] args) {         Gson gson = new GsonBuilder().create();         gson.toJson("Hello", System.out);         gson.toJson(123, System.out);     } }

在上面的例子中,我们创建了一个Gson实例,并把Java String和int转化为JSON对象。以上代码命令行里的输出结果如下:

"Hello"123

这不是火箭科学,但它是一个开始。注意,上述的结果都将输入到命令行。该toJason()方法有两个参数,Java对象转换为JSON和可追加(Java的文档)的一个实例。我们可以很容易地改变了一个文件或网络流。

package com.javacreed.examples.gson.part1;  import java.io.FileWriter; import java.io.IOException; import java.io.Writer; import com.google.gson.Gson; import com.google.gson.GsonBuilder;  public class SimpleExample2 {     public static void main(String[] args) throws IOException {         Writer writer = new FileWriter("Output.json");          Gson gson = new GsonBuilder().create();         gson.toJson("Hello", writer);         gson.toJson(123, writer);          writer.close();     } }

注意

为什么变量声明为Writer类型,而实际类型是FileWriter?

尽量使用泛型是一个很好的方法。在上例中,我们只使用了Appendable和Writer接口定义的方法。使用泛型使代码更易于移植和维护,下面是个不好的例子。

注意,上面例子中,我们没有正确处理流(Writer)。理想情况下,资源在finaly块 (教程) 中关闭或者用在try-with-resource(教程)中。我们忽略了这个是为了保持代码简洁。\

public static void main(String[] args) throws IOException {     try (Writer writer = new FileWriter("Output.json")) {         Gson gson = new GsonBuilder().create();         gson.toJson("Hello", writer);         gson.toJson(123, writer);     } }

以上代码生成文件:包含JSON对象的Output.json。注意,这里我们使用了字符流而不是字节流。因为toJson()方法需要一个 Appendanble实例,而字节流不能实现Appendable接口,所以我们使用了字符流。Appendable接口处理字符而不是字节。Java 提供了InputStreanReader(Java文档)和OutputStreamWriter(Java文档)类进行字节流与字符流的转换,如下面的例子。

注意

注意,使用InputStreamREader和OutputStreamWriter类时,如果不提供编码或者字符集,转换将使用平台默认字符集。这将降低代码的可移植性,且在其他平台上运行将可能产生错误行为。

package com.javacreed.examples.gson.part1;  import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.Writer; import com.google.gson.Gson; import com.google.gson.GsonBuilder;  public class SimpleExample3 {      public static void main(String[] args) throws IOException {         try(Writer writer = new OutputStreamWriter(new FileOutputStream("Output.json") , "UTF-8")){             Gson gson = new GsonBuilder().create();             gson.toJson("Hello", writer);             gson.toJson(123, writer);         }     } }

如你所见,我们只需要改变实例的一部分。代码的剩余部分没有任何变化。这就是使用接口代替类作为变量类型的好处之一。

使用JSON对象

比方说,我们需要使用JSON对象并加载他们为Java对象。假设web服务器查询时产生如下JSON对象:

{   NAME:"Albert Attard",   P_LANGUAGE:"Java",   LOCATION:"Malta" }

此JSON对象包含3个不同值的域。比如我们需要使用JSON对象并创建一个Java对象来展示它。为了使这个例子更有趣,假设我们只关心name和location域。

首先创建一个Java类来表示name和location。类命名为Person。类的名字无关紧要,但域的名字必须一致。域名必须匹配(大小写敏 感)JSON对象中的名字。更进一步,类必须包含一个默认构造函数(即使它被设置为private)。如下所示,name和location域在JSON 中是大写的。JSON中域P_LANGUAGE被忽略了,因为Java对象中不包括该名称的域。请理解域名不遵守Java命名规范,暂时只是为了简化。更 多内容将在第2部分中讨论。

package com.javacreed.examples.gson.part2;  public class Person {     private String NAME;     private String LOCATION;      // Getters and setters are not required for this example.     // GSON sets the fields directly using reflection.      @Override     public String toString() {         return NAME + " - " + LOCATION;     } }

准备好Java对象后,我们可以读取JSON对象并加载为Java对象,如下代码所示。为了模拟真实情况,我们使用了字节流作为输入。还要注意,JSON内容保存在resource文件夹的文件里(这不是常规做法)。

package com.javacreed.examples.gson.part2;  import java.io.IOException; import java.io.InputStreamReader; import java.io.Reader; import com.google.gson.Gson; import com.google.gson.GsonBuilder;  public class JsonToJava {      public static void main(String[] args) throws IOException {         try(Reader reader = new InputStreamReader(JsonToJava.class.getResourceAsStream("/Server1.json"), "UTF-8")){             Gson gson = new GsonBuilder().create();             Person p = gson.fromJson(reader, Person.class);             System.out.println(p);         }     } }

输出如下:

Albert Attard - Malta

Gson解析JSON对象并创建了一个Person类的实例,并打印到命令行中。

嵌套JSON对象

让我们对上面的例子更进一步,以下所示JSON代码段包含了一个嵌套对象。

{   NAME:"Albert Attard",   P_LANGUAGE:"Java",   LOCATION:"Malta",   EXAM: {     SUBJECT:"Programming",     GRADE:4.5   } }

EXAM域由两个域组成,分别是SUBJECT和GRADE。我们需要修改Person类的定义来包含EXAM域,并创建一个新的Java类来表示EXAM,该类包含SUBJECT和GRADE域。

我们首先创建新的类来表示嵌套对象。就像之前讨论那样,类名无关紧要,但是域名必须与JSON中的域名匹配。

package com.javacreed.examples.gson.part3;  public class Exam {     private String SUBJECT;     private double GRADE;      // Getters and setters are not required for this example.     // GSON sets the fields directly using reflection.      @Override     public String toString() {         return SUBJECT + " - " + GRADE;     } }

现在我们可以修改Person类,引入一个与JSON中EXAM同名的域,类型为Exam。注意,下面的Person类与前一个<span style=”color: #ff0000;”>位于</span>不同的包。

package com.javacreed.examples.gson.part3;  public class Person {      private String NAME;     private String LOCATION;     private Exam EXAM;      @Override     public String toString() {         return NAME + " - " + LOCATION + " (" + EXAM + ")";     } }

注意,所需的变化是最小的,因为Gson动态发现(使用反射)类和它的域。本文不包含反射,对于更多关于反射的信息,请参考:Reflection in Action.

***,让我们尝试新的变化。

package com.javacreed.examples.gson.part3;  import java.io.IOException; import java.io.InputStreamReader; import java.io.Reader; import com.google.gson.Gson; import com.google.gson.GsonBuilder;  public class JsonToJava {      public static void main(String[] args) throws IOException {         try(Reader reader = new InputStreamReader(JsonToJava.class.getResourceAsStream("/Server2.json"), "UTF-8")){             Gson gson = new GsonBuilder().create();             Person p = gson.fromJson(reader, Person.class);             System.out.println(p);         }     } }

JsonToJava类没有做任何改变,因为Gson使用了模型(Person和Exam类)将Json映射成Java。

结论

即使JSON可能是一个新概念,但它十分简单与直接。此外,相比于需要增加标签进行消息/数据转换而不断膨胀的笨重的XML,它因为简单更加流行。 需要指出JSON是javascript的一个子集,JavaScript将它作为一个***的方案来进行数据交换,例如网页。GSON  API使它更便于使用,即使在这里没有讨论的部分,它也提供了强大的灵活性。

感谢你能够认真阅读完这篇文章,希望小编分享的“Java Json API中Gson怎么用”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网精选频道,更多相关知识等着你来学习!

--结束END--

本文标题: Java Json API中Gson怎么用

本文链接: https://lsjlt.com/news/287388.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java Json API中Gson怎么用
    这篇文章主要介绍了Java Json API中Gson怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。GSON是Google开发的Java API,用于转换Java对象和...
    99+
    2023-06-17
  • Java中利用gson解析Json实例教程
    前言本文主要跟大家介绍了关于Java用gson解析Json的相关内容,分享出来供大家参考学习,需要的朋友们下面来一起看看吧。json数据{ "resultcode": "200", "reason": "successed!", "resu...
    99+
    2023-05-31
    java gson 解析json
  • 怎么使用GSON解析JSON数据
    使用GSON解析JSON数据的步骤如下:1. 添加GSON库的依赖:在项目的build.gradle文件中添加以下依赖:```jav...
    99+
    2023-08-18
    GSON JSON
  • Java JSON处理库之Gson的用法详解
    目录引言Gson的基本功能1. 将Java对象转换为JSON字符串(序列化)2. 将JSON字符串转换为Java对象(反序列化)使用Gson的基本步骤1. 添加依赖2. 创建Java...
    99+
    2023-05-19
    Java JSON处理 Java Gson用法 Java Gson
  • Android中Gson怎么用
    小编给大家分享一下Android中Gson怎么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1. 导入Android Studio工程dependencies {    ...
    99+
    2023-06-25
  • gson怎么解析json嵌套数组
    使用Gson解析嵌套数组的JSON,需要使用嵌套的Java对象来表示JSON结构。下面是一个示例代码,演示了如何使用Gson解析嵌套...
    99+
    2023-08-16
    gson json
  • Android中使用Gson解析JSON数据的两种方法
    Json是一种类似于XML的通用数据交换格式,具有比XML更高的传输效率. 从结构上看,所有的数据(data)最终都可以分解成三种类型: 第一种类型是标量(scalar),也就...
    99+
    2022-06-06
    gson解析json json数据 JSON 方法 gson Android
  • Gson中toJson和fromJson方法怎么用
    这篇文章将为大家详细讲解有关Gson中toJson和fromJson方法怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。引入依赖:pom.xml文件中加入<!-- https://mv...
    99+
    2023-06-25
  • Java中的API怎么使用
    这篇“Java中的API怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java中的API怎么使用”文章吧。1.API...
    99+
    2023-06-29
  • java怎么调用windows api
    要调用Windows API,可以使用Java的JNI(Java Native Interface)来实现。以下是一些基本步骤:1....
    99+
    2023-10-18
    java
  • hbase 2.0.2 java api怎么用
    这篇文章将为大家详细讲解有关hbase 2.0.2 java api怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。package com.hbase.test;import ja...
    99+
    2023-06-02
  • Java怎么调用ElasticSearch API
    本篇内容介绍了“Java怎么调用ElasticSearch API”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!java操作es有...
    99+
    2023-07-05
  • java如何利用FastJSON、Gson、Jackson三种Json格式工具自定义时间序列化
    Java处理JSON数据有三个比较流行的类库FastJSON、Gson和Jackson。JacksonJackson是由其社区进行维护,简单易用并且性能也相对高些。但是对于复杂的bean转换Json,转换的格式鄙视标准的Json格式。PS:...
    99+
    2023-05-31
    java fastjson gson
  • JavaScript中JSON怎么用
    这篇文章主要为大家展示了“JavaScript中JSON怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JavaScript中JSON怎么用”这篇文章吧。J...
    99+
    2024-04-02
  • Java中的Kafka 怎么利用API进行调用
    今天就跟大家聊聊有关Java中的Kafka 怎么利用API进行调用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。客户端创建对应协议的请求客户端发送请求给对应的brokerbroker...
    99+
    2023-05-31
    java kafka api
  • java怎么用post发json数据
    在Java中使用POST方法发送JSON数据可以通过以下步骤实现:1. 导入必要的包:```javaimport java.io.O...
    99+
    2023-08-20
    java json
  • JavaScript中怎么使用json
    本篇内容主要讲解“JavaScript中怎么使用json”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript中怎么使用json”吧! 什么是 J...
    99+
    2024-04-02
  • java中api是什么?
    API(Application Programming Interface,应用程序编程接口)是java提供的一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节...
    99+
    2014-09-16
    java教程 java api
  • java json字符串怎么转json对象
    可以使用Java的JSON库来将JSON字符串转换为JSON对象。常用的JSON库有GSON、Jackson、Fastjson等。以...
    99+
    2023-09-27
    java json
  • 怎么在Java中使用正则表达式API
    本文小编为大家详细介绍“怎么在Java中使用正则表达式API”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么在Java中使用正则表达式API”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。前言:在正则表达式的世...
    99+
    2023-07-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作