繁体   English   中英

将 Java pojo 转换为 json 字符串

[英]Convert Java pojo to json String

我有以下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. 格森

    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);
  2. 杰克逊

    另一个用于 Java 序列化/反序列化 ( docs ) 的库,完全嵌入了spring-boot-starter-web中的所有依赖项, Spring Boot的依赖项启动器之一 - 流行的 Java IOC/DI 框架。

    依赖(databind 是主要的依赖,对于注解和附加特性,你需要更多的 Jackson 依赖)

    马文:

     <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);

值得注意的细节:对于对象的完整序列化和完整反序列化(以最简单的形式),您必须公开所有 getter/setter。 在任何情况下都必须有一个空的构造函数。

参考文章

  1. Baeldung 的 Java 中的 JSON
  2. 杰克逊 vs Gson by Baeldung

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

(我会推荐 ObjectMapper)

  • 对象映射器

Jackson ObjectMapper 介绍

  • GSON

如何将 Java 对象与 JSON 相互转换

  • 比较

杰克逊(ObjectMapper)vs Gson

我建议您将 Jackson 添加到您的项目中,它很容易使用。

<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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM