如何使用 jackson fastxml 克隆经过一些修改的 json 内容

问题描述 投票:0回答:1

假设我们创建一个 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();

现在我想将这个

content
克隆到另一个 json 中,但进行一些修改(比如覆盖一些字段)。鉴于以下限制,我怎样才能实现这一目标?

  1. 以上内容创作极其冗长且复杂
  2. 它不使用模式
  3. 它没有代表每个字段/节点的 Java 对象
  4. 必须保留字段的顺序
java json jackson fasterxml
1个回答
0
投票

要使用 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");
© www.soinside.com 2019 - 2024. All rights reserved.