问题不在Python方面,甚至也不在curl方面;而是shell在将参数传递给curl之前如何解释命令行的问题。你可以看到如果你使用
echo
curl
:
echo '{"tags": "['a1','b2']"}'
输出:
{"tags": "[a1,b2]"}
不能简单地在由这些单引号分隔的字符串中使用单引号。我的第一个想法是避开单引号来解决这个问题,但我找不到办法。因此,我认为最好使用双引号作为字符串分隔符,并转义字符串中的双引号(带反斜杠),如下所示:
echo "{\"tags\": \"['a1','b2']\"}"
输出:
{"tags": "['a1','b2']"}
curl --header "Content-Type application/json" --request POST --data "{\"tags\": \"['a1','b2']\"}"
如果你问我的话,我觉得很麻烦,但我并没有马上找到更好的办法。