Как преобразовать экземпляр JsonNode в реальное Pojo - PullRequest
1 голос
/ 02 апреля 2020

В определенный момент в моем коде я проанализировал документ JSON, представленный в виде строки, в JsonNode, потому что я пока не знаю фактический тип целевого класса pojo.

Теперь, спустя некоторое время, я знаю Class экземпляр pojo и хочу преобразовать это JsonNode в фактическое pojo этого класса (которое снабжено соответствующими @JsonProperty аннотациями). Можно ли это сделать? Если да, то как?

Я работаю с Джексоном 2.10.x.

1 Ответ

2 голосов
/ 02 апреля 2020

В этом случае вы можете использовать два метода:

См. Пример ниже:

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.File;
import java.util.StringJoiner;

public class JsonNodeConvertApp {

    public static void main(String[] args) throws Exception {
        File jsonFile = new File("./resource/test.json").getAbsoluteFile();

        ObjectMapper mapper = new ObjectMapper();
        JsonNode node = mapper.readTree(jsonFile);

        System.out.println(mapper.treeToValue(node, Message.class));
        System.out.println(mapper.convertValue(node, Message.class));
    }
}

class Message {
    private int id;
    private String body;

    // getters, setters, toString
}

Над кодом для JSON полезной нагрузки, как показано ниже:

{
  "id": 1,
  "body": "message body"
}

отпечатки:

Message[id=1, body='message body']
Message[id=1, body='message body']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...