You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中如何向现有JSON节点写入数据且不丢失原有数据

核心实现逻辑

必须先读取原有JSON文件的全量内容到内存,更新course数组节点后再全量写回文件,即可保证原有存储内容不丢失。以下以Java生态常用的Jackson JSON处理库为例给出实现方案:

1. 引入依赖(Maven)

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.15.2</version>
</dependency>

如果用Gradle或者其他构建工具,对应引入同版本的Jackson依赖即可。

2. 完整实现代码

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import java.io.File;
import java.io.IOException;

public class AppendCourseData {
    public static void main(String[] args) throws IOException {
        // 初始化Jackson解析工具
        ObjectMapper objectMapper = new ObjectMapper();
        // 替换为你的JSON文件实际存储路径
        File jsonFile = new File("your/data/path/data.json");

        // 读取现有JSON文件解析为根节点
        JsonNode rootNode = objectMapper.readTree(jsonFile);
        // 获取course对应的数组节点
        ArrayNode courseArray = (ArrayNode) rootNode.get("course");

        // -------------------- 追加新数据开始 --------------------
        // 追加course1数据
        courseArray.add("course1");
        ObjectNode course1Info = objectMapper.createObjectNode();
        course1Info.put("StartDate", "16/09/2022");
        course1Info.put("EndDate", "16/09/2022");
        courseArray.add(course1Info);

        // 追加course2数据
        courseArray.add("course2");
        ObjectNode course2Info = objectMapper.createObjectNode();
        course2Info.put("StartDate", "1/10/2021");
        course2Info.put("EndDate", "1/10/2022");
        courseArray.add(course2Info);
        // -------------------- 追加新数据结束 --------------------

        // 格式化后写回原文件
        objectMapper.writerWithDefaultPrettyPrinter().writeValue(jsonFile, rootNode);
    }
}

注意事项

  • 你提供的示例JSON存在末尾冗余逗号的语法问题,实际使用前请确保原JSON文件语法合法,否则会解析失败
  • 如果是首次创建JSON文件不存在原有内容,需要先初始化写入带有空course数组的JSON结构,再执行追加逻辑
  • 若使用Fastjson2等其他JSON处理库,实现逻辑一致:先读取文件为JSON对象,获取course数组节点后调用add方法追加元素,最后写回文件即可

内容的提问来源于stack exchange,提问作者Hannan Max

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 04:36:02