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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 22:39:15