首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >合并两个JsonNode

合并两个JsonNode
EN

Stack Overflow用户
提问于 2017-10-24 15:40:06
回答 3查看 6.4K关注 0票数 2

我有两个JsonString,需要转换为JsonNode并加入这两个JsonNodes。如果两个jsonnode的键不同,则代码运行良好,但如果它们相同,则后者将覆盖。这是我的两个JsonNodes:

“{\”语音类型\:\“N95\”,\"cat\":\"WP\"}“ {“语音类型\”:\“n96\”,\“cat\”:\“Wy\”}。

我的代码生成的结果如下:{"phonetype":"N96","cat":"Wy"}

代码语言:javascript
复制
public class JsonJoining {

    public static void main(String[] args) throws JsonProcessingException, IOException {
        ObjectMapper mapper = new ObjectMapper();

        JsonNode mainNode=mapper.readTree("{\"phonetype\":\"N95\",\"cat\":\"WP\"}");

        JsonNode resuupdateNode=mapper.readTree("{\"phonetype\":\"N96\",\"cat\":\"Wy\"}");
        JsonNode result=merge(mainNode, resuupdateNode);
        System.out.println(result);
    }
    public static JsonNode merge(JsonNode mainNode, JsonNode updateNode) {

        Iterator<String> fieldNames = updateNode.fieldNames();
        while (fieldNames.hasNext()) {

            String fieldName = fieldNames.next();
            System.out.println(fieldName);
            JsonNode jsonNode = mainNode.get(fieldName);

            if (jsonNode != null && jsonNode.isObject()) {
                merge(jsonNode, updateNode.get(fieldName));
            }
            else {
                if (mainNode instanceof ObjectNode) {

                    JsonNode value = updateNode.get(fieldName);
                    ((ObjectNode) mainNode).put(fieldName, value);
                }
            }

        }

        return mainNode;
    }
}

是否有可能合并这两个Jsonnode并生成第三个jsonnode,其外观如下:

代码语言:javascript
复制
 {"firstjson":{"phonetype":"N95","cat":"WP"},
 "secondjson":{phonetype":"N96","cat":"Wy}}
EN

回答 3

Stack Overflow用户

发布于 2018-09-26 21:58:56

尝试以下几个方面:

代码语言:javascript
复制
public static JsonNode mergeCollection(JsonNode value1,JsonNode value2){
        ObjectNode objectNode = mapper.createObjectNode();

             if(value1!=null) {
                 ObjectNode node1 = mapper.createObjectNode();

                 node1.set("value1",value1);
                 node1.fields().forEachRemaining(kv -> objectNode.set(kv.getKey(), kv.getValue()));
             }
             if(value2!=null) {
                 ObjectNode node2 = mapper.createObjectNode();
                 node2.set("value2",value2);
                 node2.fields().forEachRemaining(kv -> objectNode.set(kv.getKey(), kv.getValue()));
             }
        return objectNode;
}
票数 1
EN

Stack Overflow用户

发布于 2020-12-01 06:10:26

代码语言:javascript
复制
ObjectMapper mapper = new ObjectMapper();
ArrayNode jsonArray = mapper.createArrayNode();

jsonArray.add(value1);
jsonArray.add(value2);

System.out.println(jsonArray);
票数 -1
EN

Stack Overflow用户

发布于 2021-02-16 06:40:53

相信我,下面的代码是合并两个或多个jsonnodes的最佳方法。

代码语言:javascript
复制
import com.fasterxml.jackson.databind.ObjectMapper;

import com.fasterxml.jackson.databind.JsonNode;

JsonNode js1,js2,js3;

String result=js1.toString()+js2.toString()+js3.toString();
result=result.replace("}{",",");
JsonNode j=new ObjectMapper().readTree(result); // remove the duplicate entry and convert string to json
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46914704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档