如何从 JsonNode 获取键值映射?

How can I fetch a key-value map from JsonNode?

我有一个以下 JSON 文件。

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

有什么方法可以使用路径路径将这些键和值作为 Map<String, String> 获取吗?

我目前就是这样做的。

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

转换示例如下:

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

您可以像下面这样创建简单的 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}}