提问人:Morpheus 提问时间:10/30/2023 更新时间:10/30/2023 访问量:23
如何使用 jackson fasterxml 克隆经过一些修改的 json 内容
How to clone a json content with some modifications using jackson fasterxml
问:
假设我们创建一个 json 作为字符串,构造如下;
StringWriter writer = new StringWriter();
final JsonGenerator json = mapper.getFactory().createJsonGenerator(writer);
// construct the content using various json.write* functions
json.flush();
String content = writer.toString();
现在我想将其克隆到另一个 json 中,但进行了一些修改(例如覆盖某些字段)。鉴于以下限制,我该如何实现?content
- 上述内容创作极其冗长和复杂
- 它不使用架构
- 它没有表示每个字段/节点的 Java 对象
- 必须保留字段的顺序
答:
0赞
Hemant Metalia
10/30/2023
#1
要使用 Jackson FasterXML 克隆 JSON 内容,并进行一些修改,同时保留字段的顺序并考虑到您提到的限制,您可以按照以下步骤操作:
将原始 JSON 内容解析为 JsonNode。 创建一个新的 ObjectNode 进行修改。 将所需的修改应用于新的 ObjectNode。 将修改后的 ObjectNode 序列化回 JSON。
// Create Jackson ObjectMapper
ObjectMapper mapper = new ObjectMapper();
// Parse the original JSON content into a JsonNode
JsonNode originalNode = mapper.readTree(originalJson);
// Create a new ObjectNode to make modifications
ObjectNode modifiedNode = mapper.createObjectNode();
// Copy the original content to the modified node
originalNode.fields().forEachRemaining(entry -> {
modifiedNode.set(entry.getKey(), entry.getValue());
});
// Apply modifications (override some fields)
modifiedNode.put("field1", "new_value1");
评论