有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何在Java中将Json节点插入到另一个节点中?

我有一个Json节点:

{
    "name":
    {
        "first": "Tatu",
        "last": "Saloranta"
    },
    "title": "Jackson founder",
    "company": "FasterXML"
}

我有另一个Json节点(我要插入的节点):

{
    "country": "My country",
    "hobbies": "some hobbies"
}

我希望生成的节点为:

{
    "additional info":
    {
        "country": "My country",
        "hobbies": "some hobbies"
    },
    "name": 
    {
        "first": "Tatu",
        "last": "Saloranta"
    },
    "title": "Jackson founder",
    "company": "FasterXML"
}

在Java中如何做到这一点?以下是我的java代码:

private final static ObjectMapper JSON_MAPPER = new ObjectMapper();
JsonNode biggerNode = parseTree(someObject);
JsonNode nodeToBeInsertede = JSON_MAPPER.valueToTree(anotheObj);
//I want to do something like this:
//biggerNode.put("additionalInfo", nodeToBeInsertede)

共 (1) 个答案

  1. # 1 楼答案

    代替JsonNode读取Map并使用标准Map.put()修改较大的对象:

    ObjectMapper mapper = new ObjectMapper().enable(SerializationFeature.INDENT_OUTPUT);
    TypeReference<Map<String, Object>> type = new TypeReference<>() {};
    Map<String, Object> biggerMap = mapper.readValue(biggerJson, type);
    Map<String, Object> smallerMap = mapper.readValue(smallerJson, type);
    
    biggerMap.put("additional_info", smallerMap);
    
    String outJson = mapper.writeValueAsString(biggerMap);
    System.out.println(outJson);
    

    将输出:

    {
      "name" : {
        "first" : "Tatu",
        "last" : "Saloranta"
      },
      "title" : "Jackson founder",
      "company" : "FasterXML",
      "additional_info" : {
        "country" : "My country",
        "hobbies" : "some hobbies"
      }
    }