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

如何在ReactJS中将GitHub原始文件数据转换为JSON格式

实现方案

问题排查

你当前的代码存在两处核心错误:

  • fetch方法返回的Response对象本身没有content属性,必须先调用res.json()解析GitHub接口的结构化返回结果
  • GitHub Contents API返回的文件内容是Base64编码格式,且你获取的是CSV文件,还需要额外做CSV转JSON的处理

完整实现代码

首先安装CSV解析依赖:
npm install papaparse

业务代码如下:

import Papa from 'papaparse'

fetch("https://api.github.com/repos/graphql-compose/graphql-compose-examples/contents/examples/northwind/data/csv/employees.csv")
  .then((res) => {
    if (res.ok) {
      // 解析GitHub接口返回的结构化数据
      return res.json()
    }
    throw new Error("请求失败")
  })
  .then((githubData) => {
    // 解码Base64格式的文件内容,先去除返回自带的换行符避免解码报错
    const rawCsv = atob(githubData.content.replace(/\n/g, ''))
    // CSV转JSON,header参数设为true会将CSV第一行作为JSON的键名
    const jsonData = Papa.parse(rawCsv, { header: true }).data
    console.log('转换完成的JSON数据:', jsonData)
  })
  .catch((error) => console.log(error))

优化建议

如果你不需要获取文件的元数据(比如更新时间、SHA值等),可以直接请求文件的raw地址,省去Base64解码的步骤:

import Papa from 'papaparse'

fetch("https://raw.githubusercontent.com/graphql-compose/graphql-compose-examples/master/examples/northwind/data/csv/employees.csv")
  .then((res) => {
    if (res.ok) return res.text()
    throw new Error("请求失败")
  })
  .then((rawCsv) => {
    const jsonData = Papa.parse(rawCsv, { header: true }).data
    console.log(jsonData)
  })
  .catch((error) => console.log(error))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 01:36:06