gpt4 book ai didi

json - jq 将文件内容添加到 json 中并更新

转载 作者:行者123 更新时间:2023-12-04 17:53:10 32 4
gpt4 key购买 nike

我正在尝试使用从 REST API GET 调用中获取一个 JSON 对象,然后使用 jq 将原始文件(在本例中为 .md 文件)的内容添加到其中。 ,在使用 PUT 调用更新同一对象之前。

我正在使用以下方法获取文件并将其写入本地:

curl -u USERNAME:PASSWORD 'https://example.com/myfile.json' |猫 > ./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'

我想知道如果可能的话,如何使用 jq 将文件内容添加到我的 JSON 文件中

最佳答案

此处简单 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 ....)

关于json - jq 将文件内容添加到 json 中并更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42701268/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com