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)
解决方案
而不是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"
}
}
推荐阅读
- c# - add event handler for leaving input box
- python - Numpy在数组中的列之间找到一致性
- mysql - SQL AVG() confusion basic SQL
- node.js - nodejs promisify a callback function with one parameter /callback
- python - 大数的最大素数失败
- php - I can not access a POST within my class in PHP
- svg - SVG 文本未在边缘对齐
- excel - 数据透视表中单行中的多个列
- python - Tkinter Label() 显示在使用 update() 的循环期间逐渐减慢
- php - 如何在 php 中显示 mlm 二进制家谱?