Java如何从GitHub公共仓库获取JSON数据生成JSONObject
可行性结论
这个需求完全可以实现。唯一需要提前注意的坑是:你给出的链接是GitHub的文件预览网页地址,直接请求这个地址拿到的是带网页UI、导航栏的HTML源码,不是纯JSON内容,直接解析必然报错,只要先拿到文件的原始内容访问地址就可以正常处理。
基于org.json.simple的标准实现方案
你当前用的org.json.simple.JSONObject完全可以满足存储需求,实现步骤如下:
- 第一步:处理访问地址,把原链接路径中的
/blob/字段替换为/raw/,得到的地址会直接返回纯JSON格式的文件内容,不会夹带网页代码。 - 第二步:发起普通HTTP GET请求,拿到地址返回的完整JSON文本。请求时记得带上常规的User-Agent请求头,避免被GitHub的反爬策略拦截返回403错误。
- 第三步:用org.json.simple自带的
JSONParser解析拿到的文本,强转为JSONObject对象即可。
参考实现代码:
import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class JsonFetchTest { public static void main(String[] args) throws Exception { // 请自行将原链接中的/blob/替换为/raw/填入下方 URL requestUrl = new URL("替换后的raw格式访问地址"); HttpURLConnection connection = (HttpURLConnection) requestUrl.openConnection(); connection.setRequestMethod("GET"); // 常规UA标识,避免被拦截 connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"); // 读取响应内容 BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); StringBuilder contentBuilder = new StringBuilder(); String line; while ((line = reader.readLine()) != null) { contentBuilder.append(line); } reader.close(); connection.disconnect(); // 解析为JSONObject JSONParser parser = new JSONParser(); JSONObject resultJson = (JSONObject) parser.parse(contentBuilder.toString()); // 后续可直接对resultJson执行增删改查操作 } }
其他可达成目标的替代方案
- 简化HTTP请求逻辑:如果觉得原生
HttpURLConnection的样板代码太多,可以引入OkHttp、Apache HttpClient等封装好的HTTP客户端工具类,减少手写流处理的代码,JSON解析部分的逻辑和上述方案完全一致。 - 本地文件读取方案:如果这个JSON文件的内容不会频繁更新,可以直接把文件下载到项目的资源目录,运行时直接从项目classpath读取文件流做解析,不需要发起外网请求,稳定性更高,不会受网络波动、GitHub服务可用性的影响。
- 更换JSON处理类库:如果后续需要更便捷的JSON操作,也可以换成Jackson、Gson等更成熟的JSON类库,除了基础的JSONObject操作,还支持直接把JSON结构映射为自定义Java实体类,省去手动取字段的代码。如果当前已经确定用org.json.simple,不需要特意更换。
踩坑提醒:如果解析时抛出格式异常,优先检查你请求拿到的内容是不是纯JSON,大概率是用了预览网页链接、或者被反爬拦截返回了错误页面,把响应内容打印出来一眼就能定位问题。
内容的提问来源于stack exchange,提问作者cantcode4mylife
相关产品推荐
相关产品推荐

