如何在GitHub中创建一个返回JSON数据的代码片段(gist)

21

如果你正在寻找在Github Gist上进行完整的JSON存储,我建议你使用JSONGist.io - spurushottam13
4个回答

15
问题在于HTTP响应类型为text/plain,但是大多数客户端需要application/json来正确处理它。
更新: 使用rawgit.com,我能够获得带有正确内容类型的测试结果。 我的测试Gist: https://gist.githubusercontent.com/anonymous/85dbc2c71023f24c2e26/raw/849848a71a1805a314897f9fe98eb7dc43e2e9b9/gistfile1.json 我的RawGit URL: https://rawgit.com/anonymous/85dbc2c71023f24c2e26/raw/849848a71a1805a314897f9fe98eb7dc43e2e9b9/gistfile1.json 使用HTTP GET方法发送数据。
GET https://rawgit.com/anonymous/85dbc2c71023f24c2e26/raw/849848a71a1805a314897f9fe98eb7dc43e2e9b9/gistfile1.json HTTP/1.1
Accept: application/json
Host: rawgit.com

收到回复:

HTTP/1.1 200 OK
Server: nginx
Date: Wed, 24 Dec 2014 10:57:07 GMT
Content-Type: application/json
Connection: keep-alive
X-Content-Type-Options: nosniff
X-Robots-Tag: none
RawGit-Naughtiness: 0
Access-Control-Allow-Origin: *
ETag: "0250189db62d31523a5cd0da47449eb4"
Cache-Control: max-age=300
Vary: Accept-Encoding
RawGit-Cache-Status: HIT
Content-Length: 104

[{ Name: "Vignesh", Salary: 30000 },{ Name: "Yuvraj", Salary: 90000 },{ Name: "Nithya", Salary: 87000 }]

还有一些屏幕截图:

在此输入图片描述

在此输入图片描述


我该如何更改内容类型? - Vignesh Subramanian
这是由服务器控制的,似乎GitHub并没有提供这种能力。如果您负责处理客户端,您很可能可以通过让它忽略类型或组合一个轻量级代理Web服务器来使其正常工作,该服务器将下载文本字符串并使用HTTP标头进行保留... 客户端正在使用哪种语言/技术? - Adam Plocher
我可以添加类似于JSON.parse(data)的内容来将其转换为JSON吗? - Vignesh Subramanian
我正在尝试对一个.js文件做同样的事情,但似乎根本没有返回任何content-type头信息。还有其他人遇到过这种情况吗? - Roberto Andrade
你正在使用 Fiddler 查看吗?你是否先发送 Accepts 标头?Accepts 告诉服务器客户端的能力(或期望),基于此,服务器应该用正确的标头和信息进行响应。 - Adam Plocher
RawGit已经到达了它的有用寿命的尽头。 - Toolkit

6
  1. 将您的json放入新的Gist。
  2. 查找选项raw。 点击它,您会得到您所拥有的任何内容的纯文本版本。

需要注意的一件事是,它显示为json数据,但标题显示为 - Content-Type:text/plain

您可以使用https://rawgit.com/来修改标题。


我应该如何将它转换为JSON格式? - Vignesh Subramanian
你做不到。当 GitHub 服务器渲染响应时,它将内容类型设置为文本/纯文本。除非你运行自己的服务器或通过另一个修改标头的服务器反向代理请求。 - hyades
1
@vignesh 在创建gist时,您需要将文件保存为.json文件。 - hyades
1
RawGit 已经达到了它的有用寿命的尽头。 - Toolkit

2

我认为最好的方法是直接使用Github REST API:

GET https://api.github.com/gists/:GIST_ID HTTP/1.1
Accept: application/json

然后,您可以从路径"files.{FILE_NAME}.content"的响应中获取最新的文件内容(JSON)。

响应还包含其他一些有用的信息,例如历史记录和作者信息、时间戳等。

这消除了其他方法的几个缺点:

  1. 使用原始的gist url是特定修订版本的静态url。如果gist得到更新,原始的gist url将指向旧版本
  2. rawgit正在关闭,因此使用它将对您的项目造成致命影响。
  3. 直接从gist url获取。您需要解析html。完全没必要!¯\_(ツ)_/¯

0
  1. 将有效的JSON文本粘贴到gist中。
  2. 给它一个以.json结尾的文件名。
  3. 创建gist。
  4. 现在只需选择原始按钮并使用此URL进行get请求即可。

对我来说很有效。

标题说它是文本,但它是有效的json。

您的gist不是有效的JSON。我认为这是您的问题。键必须是字符串。https://jsonlint.com/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接