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

JsonNode.get()返回null 如何提取JSON中的name和forks字段值

问题根因

你调用的GitHub组织仓库公开接口返回的最外层结构是由仓库信息对象组成的JSON数组,不是单个JSON对象。你解析得到的jsonTree是数组类型的JsonNode,数组本身不存在name属性,直接在根节点调用get("name")必然返回null。

修复实现

你需要遍历根数组下的每一个仓库对象节点,再分别提取每个节点下的name和forks字段即可,修正后的可运行代码如下:

RestTemplate restTemplate = new RestTemplate();
String resourceUrl = "https://api.github.com/orgs/engineyard/repos";
String response = restTemplate.getForObject(resourceUrl, String.class);
ObjectMapper mapper = new ObjectMapper();
JsonNode jsonTree = mapper.readTree(response);

// 校验根节点类型,避免类型转换报错
if (jsonTree.isArray()) {
    for (JsonNode repoItem : jsonTree) {
        String repoName = repoItem.get("name").asText();
        int forksCount = repoItem.get("forks").asInt();
        // 按需处理提取到的字段,这里做示例打印
        System.out.printf("仓库名称:%s,Fork数量:%d%n", repoName, forksCount);
    }
}
可选优化
  • 如果后续需要提取更多仓库字段,可以自定义对应字段的Java实体类,直接让RestTemplate把响应反序列化为List<你的实体类>,省去手动解析JsonNode的步骤,代码可维护性更高。
  • 未携带身份凭证调用GitHub公开接口有较低的请求限流阈值,如果运行时出现403限流错误,可以在RestTemplate请求头中添加个人GitHub Token提升限额。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 11:06:23