将 Java pojo 转换为 json 字符串



我有以下java类

public  class TabularDescriptor extends ReportDescriptor {
private String generatorClass;
private String targetClass;
private String name;
private String sublabel;
private String reportName;
private List<MappingMetadata> mappings = null;
private List<TabularColumnGroup> columnGroups = null;
private List<TabularStates> states = null;
:
:
and its getters and settere

我为每个列表都有实体类,如MappingMetadata,TabularColumnGroup,TabularStates。 我想获取这个 pojo 类的 json 数据。我能为它做些什么。

有什么用

public JSONObject toJSON() {
JSONObject ret = new JSONObject();
ret.put("generatorClass", this.generatorClass);
ret.put("targetClass", this.targetClass);
ret.put("name", this.name);
:
:
return ret;
}

如果有的话,我可以在浏览器上显示我的 json 内容,我该怎么做?谢谢。

有 2 个库使用 Java 处理 JSON 序列化/反序列化:

  1. 杰克逊

    Java 序列化/反序列化(文档(的首选库。大多数开发人员在 Java 中 JSON 交互的默认选择。完全嵌入了spring-boot-starter-webspring-boot-starter-webflux中的所有依赖项,Spring Boot的依赖项启动器 - 流行的Java IOC/DI框架。

    依赖关系

    (数据绑定是主要的依赖关系,对于注释和其他功能,您将需要更多的杰克逊依赖关系(

    专家:

    <dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>${jackson.version}</version>   
    </dependency>
    

    格拉德尔:

    dependencies {
    implementation "com.fasterxml.jackson.core:jackson-databind:${yourVersion}"
    }
    

    序列化代码段:

    TabularDescriptor tabularDescriptor = new TabularDescriptor();
    ObjectMapper mapper = new ObjectMapper();
    String json = mapper.writeValueAsString(tabularDescriptor);
    
  2. 格森

    Google的Java序列化/反序列化库(docs(。

    依赖:

    格拉德尔:

    dependencies { 
    implementation "com.google.code.gson:gson:${yourVersion}"
    }
    

    专家:

    <dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>${gson.version}</version>
    </dependency>
    

    序列化代码段:

    TabularDescriptor tabularDescriptor = new TabularDescriptor();
    Gson gson = new Gson();
    String json = gson.toJson(obj);
    

值得注意的细节:您必须公开所有 getter/setters 才能对对象进行完全序列化和完全反序列化(以最简单的形式(。在任何情况下,空构造函数都是必须的。

参考信息

  1. Java 中的 JSON by Baeldung
  2. 杰克逊vs格森,贝尔东

我建议你将杰克逊添加到你的项目中,它相当容易使用。

<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.8</version>
</dependency>

在Java中代码可以这样使用:

ObjectMapper objectMapper = new ObjectMapper();
String json = objectMapper.writeValueAsString(tabularDescriptor);
TabularDescriptor newTabularDescriptor = objectMapper.readValue(json, TabularDescriptor.class);

您可以使用ObjectMapperGson进行类到 JSON 的转换,反之亦然。

(我会推荐ObjectMapper(

  • 对象映射器

杰克逊对象映射器简介

  • 格森

如何将 Java 对象转换为 JSON 对象/从 JSON 转换

  • 比较

杰克逊(ObjectMapper( vs Gson

最新更新