Java - 添加JSON数组内的对象列表

时间:2017-12-17 15:04:08

标签: java json playframework jackson

我有一个list option类,我想要一种方法将列表中的所有选项转换为Json,并将它们添加到下面简单Json文件中的数组中。

我使用play框架,所以我必须使用它的Json库。

我已经读过该文件并在循环遍历所有节点之后获得options节点:

jsonNode.get("options")

并返回类型为com.fasterxml.jackson.databind.JsonNode

的对象

这是一个解释代码:

List<Option> options = new ArrayList<>();

选项类:

public class Option {
    private String key;
    private String query;
    private String display;
}

Json文件:

    "options": [
        {
            "key": "...",
            "query": "...",
            "display": "..."
        },
        {
            "key": "...",
            "query": "...",
            "display": "..."
        },...
    ]

我只能想办法从Json文件标记option中的List添加所有options,有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

首先,我得到了所有options

    List<FacetOption> nodeOptions = mapper.treeToValue(jsonNode.get("options"), List.class);

然后,将所有新的option列表添加到当前节点列表中:

    nodeOptions.addAll(options);

然后,替换JsonNode中的旧节点:

    ObjectNode objectNode = (ObjectNode) jsonNode;
    objectNode.replace("options", Json.toJson(nodeOptions)); 

最后,写下我需要的新文件:

mapper.writeValue(new File(newJsonFilePath), rootNode);