Как я могу получить карту ключ-значение из JsonNode? - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть следующий файл JSON.

{
  "data": {
    "k1": "v1",
    "k2": "v2",
    ...
  }
}

Есть ли способ извлечь эти ключи и значения как Map<String, String>, используя pathpath?

В настоящее время я делаю так.

JsonNode root = ...
JsonNode data = root.get("data");
ObjectReader reader = mapper.readFor(new TypeReference<Map<String, String>>(){});
reader.readValue(data);

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Вы можете создать простой POJO, как показано ниже:

class Data {
    private Map<String, String> data;

    public Map<String, String> getData() {
        return data;
    }

    public void setData(Map<String, String> data) {
        this.data = data;
    }

    @Override
    public String toString() {
        return "Data{" +
                "data=" + data +
                '}';
    }
}

Читать JSON следующим образом:

ObjectMapper mapper = new ObjectMapper();
Data data = mapper.readValue(jsonFile, Data.class);
System.out.println(data);

Над отпечатками кода:

Data{data={k1=v1, k2=v2}}
0 голосов
/ 13 февраля 2019

Вот пример разговора:

ObjectMapper objectMapper = new ObjectMapper();
        JsonNode root = objectMapper.readTree("{\n" +
                "  \"data\": {\n" +
                "    \"k1\": \"v1\",\n" +
                "    \"k2\": \"v2\"\n" +
                "  }\n" +
                "}");
        Map<String,String> map = objectMapper.convertValue(root.get("data"),Map.class);
...