Конвертировать Java pojo в json String - PullRequest
2 голосов
/ 09 января 2020

У меня есть следующий java class

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. Я хочу получить json данные для этих классов pojo. Что я могу сделать для этого.

И какая польза от

    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 в браузере, если да, как я могу это сделать? Спасибо.

Ответы [ 3 ]

2 голосов
/ 09 января 2020

Вы можете использовать ObjectMapper или Гсон для преобразования класса в JSON и наоборот.

(я бы порекомендовал ObjectMapper)

  • Object Mapper

Введение в Jackson ObjectMapper

  • GSON

Как преобразовать Java объект в / из JSON

  • Сравнение

Джексон (ObjectMapper) против Gson

1 голос
/ 09 января 2020

В мире Java существует несколько библиотек, которые занимаются сериализацией / десериализацией JSON (подробности см. В документации):

  1. GSON - Библиотека Google для Java сериализации / десериализации ( документы ).

    Зависимости:

    Gradle:

        dependencies { implementation 'com.google.code.gson:gson:2.8.6'}
    

    Maven:

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

    Java Фрагмент сериализации:

        TabularDescriptor tabularDescriptor = new TabularDescriptor();
        Gson gson = new Gson();
        String json = gson.toJson(obj);
    
  2. Джексон - другая библиотека Java Spring Boot - популярная Java IOC / DI Framework.

    Зависимости для *1071* сериализации / десериализации ( docs ) полностью интегрированы со всеми зависимостями. :

    Maven (основы c, для аннотаций и дополнительных функций вам понадобятся дополнительные зависимости Джексона):

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

    Java Фрагмент сериализации:

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

    Подробности, на которые стоит обратить внимание : вам нужно иметь все publi c методы получения / установки для сериализованного объекта и его объекта. поля для правильного результата в обоих случаях (в его простейшей форме).

Справочные статьи :

  1. https://www.baeldung.com/java-json
  2. https://www.baeldung.com/jackson-vs-gson
1 голос
/ 09 января 2020

Я бы порекомендовал вам добавить Джексона в ваш проект, он довольно прост в использовании.

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