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

Java商店程序无法读取JSON库存并打印问题求助

Java JSON库存加载问题排查

常见问题及排查步骤

1. JSON文件路径错误

  • 确认FileService中读取的JSON文件路径是否正确。相对路径需注意项目工作目录(IDE中为项目根目录,打包后为Jar所在目录)。
  • 可在读取前打印文件绝对路径验证:System.out.println(new File("inventory.json").getAbsolutePath());,检查文件是否存在。

2. JSON格式与实体类不匹配

  • 核对JSON字段名、数据类型是否和库存实体类完全一致(包括大小写),数组/对象结构是否符合预期。例如正确的库存JSON数组格式:
[
  {"id":1,"name":"Apple","price":5.99,"stock":100},
  {"id":2,"name":"Banana","price":3.49,"stock":200}
]
  • 确认解析库(Jackson/Gson等)配置是否正确:比如Jackson需确保私有字段可被解析,可添加配置:
ObjectMapper mapper = new ObjectMapper();
mapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);

3. FileService未正确返回解析数据

  • 检查加载方法是否存在空指针、数据被意外清空的情况,解析完成后打印列表大小验证:System.out.println("Loaded inventory size: " + inventoryList.size());。

4. 实体类toString()方法缺失或错误

  • 若手动添加的库存能正常打印,JSON加载的不行,大概率是解析出的对象未重写toString(),导致打印默认哈希值。需确保实体类重写该方法:
@Override
public String toString() {
    return "Product{" +
            "id=" + id +
            ", name='" + name + '\'' +
            ", price=" + price +
            ", stock=" + stock +
            '}';
}

5. 异常被静默捕获

  • 检查FileService中是否捕获了IO/JSON解析异常但未输出信息,导致错误被隐藏。修改异常处理逻辑:
try {
    // 读取解析逻辑
} catch (IOException | JsonProcessingException e) {
    e.printStackTrace();
}

调试建议

  1. 在FileService加载方法中逐步骤打印:文件存在性、读取到的JSON字符串、解析后的列表内容。
  2. 对比手动添加对象与JSON解析对象的属性值,确认数据一致性。
  3. 验证JSON文件编码为UTF-8,避免乱码导致解析失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 08:37:36