如何从 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}}
我有一个以下 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}}