我正在尝试使用来自REST API GET
调用的JSON对象,然后使用jq将原始文件(在本例中为.md文件)的内容添加到其中使用PUT
调用更新同一个对象。
我正在使用以下内容获取文件并在本地编写它:
curl -u USERNAME:PASSWORD 'https://example.com/myfile.json' | cat > ./test.json
JSON文件的格式如下:
{
"content" : "My JSON content",
"owner":...
}
我想将原始文件的内容添加到content
中,结果如下:
{
"content" : "My markdown file contents.\n\nMy JSON content",
"owner":...
}
然后使用PUT
调用更新原始JSON:
curl -u USERNAME:PASSWORD -d @./test.json -H "Content-Type: application/json" -X PUT 'https://example.com/myfile.json'
我想知道如何将文件内容添加到我的JSON
文件中,就像使用jq 一样,如果可能的话?
答案 0 :(得分:0)
这里简单的jq解决方案的关键是使用' jq -R -s'读取原始文本文件,并使用--arg系列中的一个选项读取JSON。在这里,我将使用--argfile
来实现jq版本的简单性和健壮性,但请注意文档说它已被弃用。
在文件中使用以下jq程序,例如program.jq:
. as $file
| $json
| (.content = $file + "\n" + .content)
以及文件contents.txt
中的以下文字:
Line 1 of contents.txt;
line 2.
以及curl.json中的以下JSON:
{
"content": "My JSON content",
"owner": "etc"
}
调用:
jq -R -s --argfile json curl.json -f program.jq contents.txt
产生
{
"content": "Line 1 of contents.txt;\nline 2.\n\nMy JSON content",
"owner": "etc"
}
如果使用bash,而不是将curl输出放入文件中,您可以使用: - argfile json<(curl ....)