在Java(8)中使用JsonPath到create/add节点和数组
Using JsonPath in Java (8) to create/add nodes and arrays
我正在尝试使用 JsonArray 中的新 key:value 节点创建或更新 JSON。
到目前为止,我可以使用节点图添加简单的值,但无法添加数组。
目标是创建具有以下值的 JSON 字符串:
{
"curfew": [{
"enabled": true,
"lock_time": "00:00",
"unlock_time": "00:10"
},
{
"enabled": true,
"lock_time": "00:20",
"unlock_time": "00:30"
}]
}
从一个新的空 JSON 开始,然后添加更多值(例如第二个 "curfew" 数组)。
Map<String, Object> values = ImmutableMap.of(
"enabled", true,
"lock_time", "00:00",
"unlock_time", "00:10");
String emptyJson = "{}"; //empty json
DocumentContext doc = getDocument(emptyJson)
doc.set(JsonPath.compile("$.curfew"), values).jsonString();
到目前为止我得到这个(不是数组)
{
"curfew": {
"enabled": true,
"lock_time": "00:00",
"unlock_time": "05:00"
}
}
创建一个 List<Map<String, Object>>
,然后将您的地图添加到列表中
List<Map<String, Object>> list = new ArrayList<>();
list.add(values);
并在文档中设置列表
doc.set(JsonPath.compile("$.curfew"), list).jsonString();
我正在尝试使用 JsonArray 中的新 key:value 节点创建或更新 JSON。 到目前为止,我可以使用节点图添加简单的值,但无法添加数组。
目标是创建具有以下值的 JSON 字符串:
{
"curfew": [{
"enabled": true,
"lock_time": "00:00",
"unlock_time": "00:10"
},
{
"enabled": true,
"lock_time": "00:20",
"unlock_time": "00:30"
}]
}
从一个新的空 JSON 开始,然后添加更多值(例如第二个 "curfew" 数组)。
Map<String, Object> values = ImmutableMap.of(
"enabled", true,
"lock_time", "00:00",
"unlock_time", "00:10");
String emptyJson = "{}"; //empty json
DocumentContext doc = getDocument(emptyJson)
doc.set(JsonPath.compile("$.curfew"), values).jsonString();
到目前为止我得到这个(不是数组)
{
"curfew": {
"enabled": true,
"lock_time": "00:00",
"unlock_time": "05:00"
}
}
创建一个 List<Map<String, Object>>
,然后将您的地图添加到列表中
List<Map<String, Object>> list = new ArrayList<>();
list.add(values);
并在文档中设置列表
doc.set(JsonPath.compile("$.curfew"), list).jsonString();