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