将Java pojo转换为json字符串

问题描述 投票:0回答:3

我有以下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 内容吗?如果可以的话,我该怎么做?谢谢。

java json objectmapper
3个回答
12
投票

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

  1. 杰克逊

    Java 序列化/反序列化的首选库(docs)。对于大多数开发人员来说,Java 中 JSON 交互的默认选择。完全嵌入

    spring-boot-starter-web
    spring-boot-starter-webflux
    中的所有依赖项,Spring Boot(流行的 Java IOC/DI 框架)的依赖项启动器。

    依赖项(databind 是主要依赖项,对于注释和其他功能,您将需要更多 Jackson 依赖项)

    Maven:

    <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. Gson

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

    依赖关系:

    摇篮:

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

    Maven:

    <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/setter 公开才能实现对象的完整序列化和完整反序列化(以最简单的形式)。无论如何,空构造函数是必须的。

参考信息

  1. Baeldung 的 Java 中的 JSON
  2. Jackson vs Gson by Baeldung

6
投票

我建议你将 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);

4
投票

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

(我推荐ObjectMapper)

  • 对象映射器

Jackson ObjectMapper 简介

  • GSON

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

  • 比较

Jackson(ObjectMapper) vs Gson

© www.soinside.com 2019 - 2024. All rights reserved.