由于项目要求,我必须使用com.fasterxml.jackson.databind
库来解析 JSON 数据,不能使用其他可用的 JSON 库。
我是 JSON 解析的新手,所以不确定这里是否有更好的选择?
我想知道如何更新Array
JSON 文件中节点中的字符串值。
以下是示例 JSON。请注意,这不是整个文件内容,它是一个简化版本。
{
"call": "SimpleAnswer",
"environment": "prod",
"question": {
"assertions": [
{
"assertionType": "regex",
"expectedString": "(.*)world cup(.*)"
}
],
"questionVariations": [
{
"questionList": [
"when is the next world cup"
]
}
]
}
}
以下是将 JSON 读入 java 对象的代码。
byte[] jsonData = Files.readAllBytes(Paths.get(PATH_TO_JSON));
JsonNode jsonNodeFromFile = mapper.readValue(jsonData, JsonNode.class);
要更新例如JSON 文件environment
中的根级别节点值,我在一些 SO 线程上找到了以下方法。
ObjectNode objectNode = (ObjectNode)jsonNodeFromFile;
objectNode.remove("environment");
objectNode.put("environment", "test");
jsonNodeFromFile = (JsonNode)objectNode;
FileWriter file = new FileWriter(PATH_TO_JSON);
file.write(jsonNodeFromFile.toString());
file.flush();
file.close();
问题 1:这是更新 JSON 文件中的值的唯一方法吗?这是最好的方法吗?我担心这里的双重转换和文件 I/O。
问题 2:我找不到更新嵌套数组节点值的方法,例如questionList
. 将问题从 更新when is the next world cup
为when is the next soccer world cup