【发布时间】:2014-11-25 19:50:08
【问题描述】:
我正在编写一个脚本,试图通过 Github 的 API 发送 Gist。所有请求都需要采用以下 JSON 格式:
{
"description": "the description for this gist",
"public": true,
"files": {
"file1.txt": {
"content": "String file contents"
}
}
}
我对“内容”字段的格式应该如何完成感到困惑。我正在尝试在“内容”字段中发送一个代码文本文件,例如
if(n <= 3)
n++;
else
n--;
如果我用换行符附加所有行(即“n++”;->“n++;\n”)并转义其他字符,如反斜杠和引号,那么我可以将文件作为 JSON 看起来像这样的字符串发送:
{
"description": "the description for this gist",
"public": true,
"files": {
"file1.txt": {
"content": "if(n<=3)\nn++;\nelse\nn--;"
}
}
}
,但所有缩进都丢失了,Gist 最终看起来像这样:
if(n <= 3)
n++;
else
n--;
如果我将文件作为 base64 编码字符串发送,则会收到 JSON 解析错误。我正在将 JSON 写入文本文件并使用 curl 发送请求,如下所示
curl --user user -X POST -H 'Content-Type application/json' -d @test.txt https://api.github.com/gists
那么,我必须通过哪些选项来发送保留缩进的文本文件的内容?我目前正在用 bash 编写脚本,但如果有一种为这种情况设计的具有解析功能的语言,我愿意改用它。
有没有什么方法可以将保存在缩进状态的文件作为这个 JSON 对象的字符串文字发送?我是不是对 API 有误解?
【问题讨论】:
-
试图达到同样的效果。我认为这应该使用文件的 base64 编码来完成,但我的测试失败了。 { "description": "这个要点的描述", "public": true, "files": { "file1.txt": { "content": "U3RyaW5nIGZpbGUgY29udGVudHMK", "encoding": "base64" } } }
标签: json bash curl github github-api