我需要将带有特殊字符的json数据传递给API

问题描述 投票:0回答:1

我正在尝试通过 API 将一些数据推送到我的 Tiddlywiki,以便我可以创建一个新的tiddler。 我可以传递几乎所有数据,但如果值“text”内部有空格,则会破坏尝试传递多个 URL 的curl 命令。

这是实际的命令:

curl -X PUT -i "http://192.168.1.166:8080/recipes/default/tiddlers/$title" -H "X-Requested-With: TiddlyWiki" --data $(jq -nc --arg tags "$tag" --arg text "'${content}'" '{ $tags, $text }')

我首先尝试使用

$variables
,在括号内,甚至在多个
"'"$var"'"
内,遵循其他问题。但他们中的大多数人很快推荐使用 jq,所以我尝试了一下。

我学会了如何使用 bash 的变量内容创建一些键,并且如果我通过管道传输所有这些内容,只有当我用其他字符替换空格时,我才能让它工作...我尝试了 %20 或刮掉空格 sed 没有成功。 (%20 是按字面意思替换的,所以没有帮助)

任何建议,我都会遵循您可以采取的任何其他路径。

编辑:
我尝试使用

--data-urlencode "text=${var}"
但它没有被填充,只有变量扩展是标题。其他的根本没表现出来。

API 信息: https://tiddlywiki.com/static/WebServer%2520API%253A%2520Put%2520Tiddler.html

我忘了提及我正在使用 zsh shell...

json zsh special-characters
1个回答
0
投票

您需要引用命令替换的输出:

--data "$(jq ...)"
。如果没有这个,curl 会认为第一个后面的单词是要连接的单独 URL。您还应该从
--arg text "'${content}'"
中删除单引号,否则它们将被添加到文本本身中。

© www.soinside.com 2019 - 2024. All rights reserved.