本文介绍如何使用 java 正确读取并解析一个以 json 数组格式存储的本地文件(如 courses.json),重点提取顶层字段(如 `id`)及嵌套结构中的深层字段(如 `enrollments[0].user_id`),并指出常见解析错误的根源与解决方案。
在处理从 API 获取并持久化为本地 JSON 文件的数据时,一个常见误区是混淆 JSON 数据的根结构类型:你的 Courses.json 是一个JSON 数组(以 [ 开头),而非 JSON 对象(以 { 开头)。这直接导致了你最初使用 Gson 的 JsonReader 时调用 reader.nextName() 报错——因为数组元素开头是 BEGIN_OBJECT(即 {),而非键名(name),所以 nextName() 在数组首项就抛出 IllegalStateException: Expected a name but was BEGIN_OBJECT。
因此,不推荐直接用低阶流式解析器(如 JsonReader)手动遍历数组,尤其当结构存在嵌套(如 enrollments 数组内含对象)时,极易出错且可维护性差。更可靠、简洁的方式是采用高层解析库,例如 org.json.simple 或现代替代方案(如 Jackson、Gson 的 fromJson(…, TypeToken))。以下以 org.json.simple 为例,提供完整、健壮的解析方案:
✅ 正确解析步骤(基于 org.json.simple)
-
添加依赖(Maven):
com.googlecode.json-simple json-simple 1.1.1
-
完整可运行代码: