我正在编写一个脚本,试图通过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--;"
}
}
}
,但所有缩进都丢失了,要旨最终如下所示:
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?
看一下你的字符串:
"content": "if(n<=3)\nn++;\nelse\nn--;"
如果缩进,您会在字符串中看到它:
"content": "if(n<=3)\n n++;\nelse\n n--;"
由于您编写的代码中存在错误,因此bash脚本会删除缩进。这通常是由于无法引用或使用不正确的while read
循环引起的。您的脚本不包括在内,所以我不能说在哪里。
您可以通过使用jq
而不是尝试转义自己的数据来避免所有这些错误以及更多错误:
$ cat file
if(n <= 3)
n++;
else
n--;
$ jq -R -s . file
"if(n <= 3)\n n++;\nelse\n n--;\n"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句