Bash 使用cURL编辑要点:“解析JSON时出现问题”,

Bash 使用cURL编辑要点:“解析JSON时出现问题”,,bash,Bash,尝试添加-标题内容类型:application/json,运气不好 我之所以使用它,是因为内容实际上是一个命令输出,但现在我正在测试基础知识,因为这不起作用 我相信这是和在bash逃走有关的,尝试了几个小时却没有运气。这是一场噩梦 欢迎任何提示。谢谢。看起来你的引号太多了。如果希望内容元素的值是一个对象,请使用以下替代方法: #!/bin/bash curl -v \ --request PATCH \ --data "$( printf '{"files": {"somef

尝试添加-标题内容类型:application/json,运气不好

我之所以使用它,是因为内容实际上是一个命令输出,但现在我正在测试基础知识,因为这不起作用

我相信这是和在bash逃走有关的,尝试了几个小时却没有运气。这是一场噩梦


欢迎任何提示。谢谢。

看起来你的引号太多了。如果希望内容元素的值是一个对象,请使用以下替代方法:

#!/bin/bash

curl -v \

  --request PATCH \
  --data "$(
    printf '{"files": {"somefile.json": {"content": " {"field": "value"} "}}}' \
    )" \
  --user x:x \
  https://api.github.com/gists/x
试试这个:

"content": " {"field": "value"} "
"content": {"field": "value"}
如果希望它成为字符串,请尝试以下操作:

"content": {"field": "value"}

您可以将有效负载写入一个文件,并告诉curl使用该文件作为数据,而不是反对引号转义,如下所示:

"content": " {\"field\": \"value\"} "
请注意-data参数中的@符号,它告诉curl参数的其余部分是从中读取数据的文件名


根据您创建负载的方式,您还可以使用-as-filename echo-payload | curl-data@-…

将其管道化到curl,请看一看:@Cyrus谢谢!但是:$shellcheck myscript未检测到任何问题!:/你为什么不更新你的第一个问题?如果您还没有去那里,我会告诉您编辑github API文档的要点:@GabrielA.Zorrilla:为什么我在curl和shellcheck之后也会看到一个空行?@Cyrus有一个空格,但是bash脚本和spellcheck.net都不关心。已在sc.net上更正,仍然没有问题。内容是实际的gist文件内容,而不是对象。如果键入文本字符串,它可以是任何内容。谢谢,但是GIT API的输出相同,解析JSON时出现问题。请检查JSON文件的内容是否确实是有效的JSON,使用在线JSON验证器最简单,例如,是的,它是有效的。