提交 c01aa869 编写于 作者: W wizardforcel

2020-06-14 11:10:55

上级 5fbb07fd
...@@ -40,7 +40,7 @@ Gson 的最佳**好处是**,在我们为某些成员字段进行非常特定 ...@@ -40,7 +40,7 @@ Gson 的最佳**好处是**,在我们为某些成员字段进行非常特定
学习使用 Google Gson 库序列化`HashMap`。 还应学习使用 Gson 将 JSON 字符串反序列化为包含自定义对象的`HashMap`,以便将字段值复制到适当的通用类型中。 学习使用 Google Gson 库序列化`HashMap`。 还应学习使用 Gson 将 JSON 字符串反序列化为包含自定义对象的`HashMap`,以便将字段值复制到适当的通用类型中。
## 2.提前用法 ## 2.高级用法
第一部分中的基本示例足以应付默认用例。 我们可能需要自定义 Gson 的行为以支持特定要求。 了解如何执行此操作。 第一部分中的基本示例足以应付默认用例。 我们可能需要自定义 Gson 的行为以支持特定要求。 了解如何执行此操作。
......
# GSON – 序列化和反序列化 JSON 为集 # GSON – 序列化和反序列化 JSON 为集
> 原文: [https://howtodoinjava.com/gson/gson-serialize-deserialize-set/](https://howtodoinjava.com/gson/gson-serialize-deserialize-set/) > 原文: [https://howtodoinjava.com/gson/gson-serialize-deserialize-set/](https://howtodoinjava.com/gson/gson-serialize-deserialize-set/)
了解如何在 Java 中使用 Google GSON 库反序列化或**解析 JSON 为集合**(例如[`HashSet`](https://howtodoinjava.com/java/collections/java-hashset/))。 另外,学习**序列化集合为 JSON** 了解如何在 Java 中使用 Google GSON 库反序列化或**解析 JSON 为集**(例如[`HashSet`](https://howtodoinjava.com/java/collections/java-hashset/))。 另外,学习**序列化集为 JSON**
> 值得一提的是,仅当`Set`是根元素时,我们才会做出额外的努力。 Gson 作为成员(在根下)可以很好地处理这些集。 > 值得一提的是,仅当`Set`是根元素时,我们才会做出额外的努力。 Gson 作为成员(在根下)可以很好地处理这些集。
## 1.序列化集为 JSON ## 1.序列化集为 JSON
Java 程序使用`Gson.toJson()`方法将`HashSet`序列化为 JSON。 Java 程序使用`Gson.toJson()`方法将`HashSet`序列化为 JSON。
...@@ -31,7 +31,7 @@ System.out.println(jsonString); ...@@ -31,7 +31,7 @@ System.out.println(jsonString);
``` ```
## 2.反序列化 JSON 为集 ## 2.反序列化 JSON 为集
Java 程序,使用`Gson.fromJson()`方法和[`TypeToken`](https://static.javadoc.io/com.google.code.gson/gson/2.8.5/com/google/gson/reflect/TypeToken.html)将 JSON 反序列化为`HashSet` Java 程序,使用`Gson.fromJson()`方法和[`TypeToken`](https://static.javadoc.io/com.google.code.gson/gson/2.8.5/com/google/gson/reflect/TypeToken.html)将 JSON 反序列化为`HashSet`
...@@ -61,7 +61,7 @@ System.out.println(userSet); ...@@ -61,7 +61,7 @@ System.out.println(userSet);
``` ```
向我提供有关**在 Java 中解析和反序列化 json 为集**的问题。 向我提供有关**在 Java 中解析和反序列化 json 为集**的问题。
学习愉快! 学习愉快!
......
...@@ -4,9 +4,9 @@ ...@@ -4,9 +4,9 @@
[Gson](https://howtodoinjava.com/learningpaths/gson/) 允许我们从 Java 类中排除或忽略字段,这些字段不希望包含在序列化和反序列化中。 Gson 支持许多内置机制,用于排除顶级类,字段和字段类型。 [Gson](https://howtodoinjava.com/learningpaths/gson/) 允许我们从 Java 类中排除或忽略字段,这些字段不希望包含在序列化和反序列化中。 Gson 支持许多内置机制,用于排除顶级类,字段和字段类型。
## 1\. Gson `@Expose`批注 ## 1\. Gson `@Expose`注解
[`@Expose`](https://static.javadoc.io/com.google.code.gson/gson/2.8.5/com/google/gson/annotations/Expose.html)标记要排除的对象的某些字段,默认为*标记为*,以考虑将序列化和反序列化为 JSON。 这意味着 Gson 将排除类中没有用`@Expose`批注标记的所有字段。 [`@Expose`](https://static.javadoc.io/com.google.code.gson/gson/2.8.5/com/google/gson/annotations/Expose.html)标记要排除的对象的某些字段,默认为*标记为*,以考虑将序列化和反序列化为 JSON。 这意味着 Gson 将排除类中没有用`@Expose`注解标记的所有字段。
`@Expose`注释在一种编程风格中很有用,在该编程风格中,您要显式指定应考虑进行序列化或反序列化的所有字段。 `@Expose`注释在一种编程风格中很有用,在该编程风格中,您要显式指定应考虑进行序列化或反序列化的所有字段。
...@@ -14,8 +14,8 @@ ...@@ -14,8 +14,8 @@
`@Expose`是可选的,并提供两个配置参数: `@Expose`是可选的,并提供两个配置参数:
* `serialize` – 如果*为真*,则在序列化时会在 JSON 中写出带有此批注的字段。 * `serialize` – 如果*为真*,则在序列化时会在 JSON 中写出带有此注解的字段。
* `deserialize` – 如果*为真*,则从 JSON 反序列化带有此批注的字段。 * `deserialize` – 如果*为真*,则从 JSON 反序列化带有此注解的字段。
```java ```java
@Expose(serialize = false) @Expose(serialize = false)
......
...@@ -377,7 +377,7 @@ Gson gson = gsonBuilder.create(); ...@@ -377,7 +377,7 @@ Gson gson = gsonBuilder.create();
``` ```
#### 8.1 `Employee.java`中以各种版本添加的字段 #### 8.1 `Employee.java`中以各种版本添加的字段
```java ```java
public class Employee public class Employee
......
...@@ -16,7 +16,7 @@ Table of Contents ...@@ -16,7 +16,7 @@ Table of Contents
6\. JMS Message Components 6\. JMS Message Components
``` ```
## 1\. JMS 教程 - 需要 JMS ## 1\. JMS 教程 - JMS 的必要性
在 Java 中,如果一个人想要以一种方式将消息从一个应用发送到另一个应用,使得这两个应用彼此之间一无所知,那么即使它们可以完全不依赖地部署在单独的大陆上。 例如,一个应用 A 在印度运行,另一个应用在美国运行,而 B 则有兴趣从 A 获得一些更新/消息 - 每当 A 上发生独特的事情。可能有 N 个这样的应用对 来自 A 的此类更新。 在 Java 中,如果一个人想要以一种方式将消息从一个应用发送到另一个应用,使得这两个应用彼此之间一无所知,那么即使它们可以完全不依赖地部署在单独的大陆上。 例如,一个应用 A 在印度运行,另一个应用在美国运行,而 B 则有兴趣从 A 获得一些更新/消息 - 每当 A 上发生独特的事情。可能有 N 个这样的应用对 来自 A 的此类更新。
...@@ -72,7 +72,7 @@ Table of Contents ...@@ -72,7 +72,7 @@ Table of Contents
阅读更多:[HornetQ 基本示例](//howtodoinjava.com/hornetq/basic-jms-messaging-example-using-hornetq-stand-alone-server/) 阅读更多:[HornetQ 基本示例](//howtodoinjava.com/hornetq/basic-jms-messaging-example-using-hornetq-stand-alone-server/)
## 4.消息消耗 ## 4.消息使用
在 JMS 中,可以通过两种方式使用消息: 在 JMS 中,可以通过两种方式使用消息:
...@@ -101,7 +101,7 @@ JMS API 编程模型 ...@@ -101,7 +101,7 @@ JMS API 编程模型
#### 5.1 JMS 管理对象 #### 5.1 JMS 管理对象
JMS 应用提供两种类型的管理对象: JMS 应用提供两种类型的管理对象:
...@@ -157,7 +157,7 @@ Connection connection = connectionFactory.createConnection(); ...@@ -157,7 +157,7 @@ Connection connection = connectionFactory.createConnection();
connection.close(); connection.close();
``` ```
#### 5.5 JMS 会 #### 5.5 JMS 会
[会话](https://docs.oracle.com/javaee/7/api/javax/jms/Session.html)是用于生成和使用消息的单线程上下文。 这些会话用于创建以下内容: [会话](https://docs.oracle.com/javaee/7/api/javax/jms/Session.html)是用于生成和使用消息的单线程上下文。 这些会话用于创建以下内容:
......
...@@ -93,7 +93,7 @@ public class Employee implements Serializable { ...@@ -93,7 +93,7 @@ public class Employee implements Serializable {
``` ```
#### 2.3 不使用`@XmlElementWrapper`(未包装的集合) #### 2.3 不使用`@XmlElementWrapper`(未包装的集合)
```java ```java
@XmlRootElement(name = "employee") @XmlRootElement(name = "employee")
......
# 使用 Moxy 和 Jaxb 将 JSON 转换为 Java 对象示例 # 使用 Moxy 和 Jaxb 将 JSON 转换为 Java 对象示例
> 原文: [https://howtodoinjava.com/jaxb/convert-json-to-java-object-moxy/](https://howtodoinjava.com/jaxb/convert-json-to-java-object-moxy/) > 原文: [https://howtodoinjava.com/jaxb/convert-json-to-java-object-moxy/](https://howtodoinjava.com/jaxb/convert-json-to-java-object-moxy/)
......
# JAXB 将 Java 对象写入 XML 示例 # JAXB 将 Java 对象写入 XML 示例
> 原文: [https://howtodoinjava.com/jaxb/write-object-to-xml/](https://howtodoinjava.com/jaxb/write-object-to-xml/) > 原文: [https://howtodoinjava.com/jaxb/write-object-to-xml/](https://howtodoinjava.com/jaxb/write-object-to-xml/)
...@@ -147,7 +147,7 @@ public class JaxbExample ...@@ -147,7 +147,7 @@ public class JaxbExample
``` ```
## 3)读取 XML 示例 ## 3)读取 XML 示例
如果要再次从文件读取 XML 到 Java 对象,请使用此方法。 如果要再次从文件读取 XML 到 Java 对象,请使用此方法。
......
# JAXB 将对象转换为 JSON 示例 # JAXB 将对象转换为 JSON 示例
> 原文: [https://howtodoinjava.com/jaxb/convert-object-to-json-moxy/](https://howtodoinjava.com/jaxb/convert-object-to-json-moxy/) > 原文: [https://howtodoinjava.com/jaxb/convert-object-to-json-moxy/](https://howtodoinjava.com/jaxb/convert-object-to-json-moxy/)
......
...@@ -70,7 +70,7 @@ public class EmployeeMap { ...@@ -70,7 +70,7 @@ public class EmployeeMap {
``` ```
## 3)编组映射到 XML 示例 ## 3)编组映射到 XML 示例
**将 Java 映射编组或转换为 xml** 表示形式的 Java 示例。 在下面的示例代码中,我首先在控制台中编写员工映射,然后在文件中编写。 **将 Java 映射编组或转换为 xml** 表示形式的 Java 示例。 在下面的示例代码中,我首先在控制台中编写员工映射,然后在文件中编写。
...@@ -137,7 +137,7 @@ Output: ...@@ -137,7 +137,7 @@ Output:
``` ```
## 4)解组 XML 到映射示例 ## 4)解组 XML 到映射示例
Java 示例**将 xml 转换为 Java 映射**对象。 让我们看一下`EmployeeMap`类的示例。 Java 示例**将 xml 转换为 Java 映射**对象。 让我们看一下`EmployeeMap`类的示例。
......
...@@ -73,7 +73,7 @@ public class Employees ...@@ -73,7 +73,7 @@ public class Employees
``` ```
## 3)将编组列表转换为 XML 示例 ## 3)将列表编组为 XML 的示例
编组是“将 Java 对象转换为 xml 表示形式”。 在下面的示例代码中,我首先在控制台中写入`employees`列表,然后在文件中写入。 编组是“将 Java 对象转换为 xml 表示形式”。 在下面的示例代码中,我首先在控制台中写入`employees`列表,然后在文件中写入。
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
可能还有许多其他情况,但是想法是*我们无法使用 JAXB 注解*修改模型类。 这可能是**将 Java 对象转换为 xml 而没有 jaxb** 的示例。 可能还有许多其他情况,但是想法是*我们无法使用 JAXB 注解*修改模型类。 这可能是**将 Java 对象转换为 xml 而没有 jaxb** 的示例。
## 1.没有`@XmlRootElement`进行编组时出现问题 ## 1.不带`@XmlRootElement`的编组问题
在这种情况下,如果我们尝试将[将 Java 对象直接编组为 XML](https://howtodoinjava.com/jaxb/write-object-to-xml/),则将得到类似的错误。 在这种情况下,如果我们尝试将[将 Java 对象直接编组为 XML](https://howtodoinjava.com/jaxb/write-object-to-xml/),则将得到类似的错误。
...@@ -69,7 +69,7 @@ public class Employee implements Serializable { ...@@ -69,7 +69,7 @@ public class Employee implements Serializable {
``` ```
## 2.没有`@XmlRootElement`注解的对象的解决方案 ## 2.不带`@XmlRootElement`注解的编组的解决方案
缺少`@XmlRootElement`注解时,JAXB 无法为`Employee`对象构建[`JAXBElement`](https://docs.oracle.com/javaee/7/api/javax/xml/bind/JAXBElement.html)实例。 这就是我们必须帮助 JAXB 手动构建它的地方。 缺少`@XmlRootElement`注解时,JAXB 无法为`Employee`对象构建[`JAXBElement`](https://docs.oracle.com/javaee/7/api/javax/xml/bind/JAXBElement.html)实例。 这就是我们必须帮助 JAXB 手动构建它的地方。
...@@ -93,7 +93,7 @@ JAXBElement<Employee> jaxbElement ...@@ -93,7 +93,7 @@ JAXBElement<Employee> jaxbElement
``` ```
#### 2.2 没有`@XmlRootElement`的 JAXB 编组示例 #### 2.2 不带`@XmlRootElement`的 JAXB 编组示例
现在,让我们看看该编组代码的工作原理。 现在,让我们看看该编组代码的工作原理。
......
# 没有 jaxb 注解的解组 # 不带 jaxb 注解的解组
> 原文: [https://howtodoinjava.com/jaxb/unmarshal-without-xmlrootelement/](https://howtodoinjava.com/jaxb/unmarshal-without-xmlrootelement/) > 原文: [https://howtodoinjava.com/jaxb/unmarshal-without-xmlrootelement/](https://howtodoinjava.com/jaxb/unmarshal-without-xmlrootelement/)
很多时候,您将需要**解组不具有诸如`@XmlRootElement`之类的 JAXB 注释**的 Java 对象,并且不允许您对源代码进行任何更改。 当您使用旧代码或某些您没有源代码的客户端 jar 时,可能会发生这种情况。 很多时候,您将需要**解组不具有诸如`@XmlRootElement`之类的 JAXB 注释**的 Java 对象,并且不允许您对源代码进行任何更改。 当您使用旧代码或某些您没有源代码的客户端 jar 时,可能会发生这种情况。
## 1.在没有 jaxb 注释的情况下解组时的问题 ## 1.不带 jaxb 注释的解组问题
在这种情况下,如果您尝试直接将[ Java 对象解组为 XML](https://howtodoinjava.com/jaxb/read-xml-to-java-object/) ,则将出现类似的错误。 在这种情况下,如果您尝试直接将[ Java 对象解组为 XML](https://howtodoinjava.com/jaxb/read-xml-to-java-object/) ,则将出现类似的错误。
......
...@@ -27,7 +27,7 @@ Convert JSON to Java object ...@@ -27,7 +27,7 @@ Convert JSON to Java object
您可以从 [**maven 站点**](https://mvnrepository.com/artifact/com.fasterxml.jackson.core)找到可下载的 jar 文件。 您可以从 [**maven 站点**](https://mvnrepository.com/artifact/com.fasterxml.jackson.core)找到可下载的 jar 文件。
## 2.将 Java 对象转换为 JSON 示例 ## 2.将 Java 对象转换为 JSON 示例
在简单的 pojo 对象之间进行转换时,Jackson 非常直接。 通常只涉及两个步骤, 在简单的 pojo 对象之间进行转换时,Jackson 非常直接。 通常只涉及两个步骤,
...@@ -46,7 +46,7 @@ String json = mapper.writeValueAsString(emp); ...@@ -46,7 +46,7 @@ String json = mapper.writeValueAsString(emp);
``` ```
#### 2.1 Java 程序将 Java 对象转换为 JSON #### 2.1 将 Java 对象转换为 JSON 的 Java 程序
```java ```java
package com.howtodoinjava.jackson2.example; package com.howtodoinjava.jackson2.example;
...@@ -152,7 +152,7 @@ Employee emp = mapper.readValue(json, Employee.class); ...@@ -152,7 +152,7 @@ Employee emp = mapper.readValue(json, Employee.class);
我们可以在 Java 中读取 json 文件,并将其传递给 jackson 库。 我们可以在 Java 中读取 json 文件,并将其传递给 jackson 库。
#### 3.1 Java 程序将 JSON 转换为 Java 对象 #### 3.1 将 JSON 转换为 Java 对象的 Java 程序
```java ```java
package com.howtodoinjava.jackson2.example; package com.howtodoinjava.jackson2.example;
......
...@@ -68,9 +68,9 @@ import java.io.*; ...@@ -68,9 +68,9 @@ import java.io.*;
``` ```
#### 1.2 创建 DocumentBuilder #### 1.2 创建`DocumentBuilder`
下一步是创建 DocumentBuilder 对象。 下一步是创建`DocumentBuilder`对象。
```java ```java
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册