Как вставить узел Json в другой узел на Java? - PullRequest
0 голосов
/ 17 января 2019

У меня есть один узел 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 Ответ

0 голосов
/ 17 января 2019

Вместо 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"
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...