我正在尝试使用HTTPie来解析发送一些嵌套的JSON对象,但我找不到如何。很清楚如何发送JSON对象但不是嵌套的对象,如
{" user":{" name":" john" "年龄":10}}
答案 0 :(得分:56)
你可以pass the whole JSON via stdin
:
$ echo '{ "user": { "name": "john", "age": 10 } }' | http httpbin.org/post
或specify the raw JSON as value with :=
:
$ http httpbin.org/post user:='{"name": "john", "age": 10 }'
答案 1 :(得分:28)
我喜欢这样:
Ctrl+R
它是首选的,因为它与相关命令具有相同的前缀,因此在bash中使用$ http localhost:8080/user/all
$ http GET localhost:8080/user/all # the same as the previous
$ http DELETE localhost:8080/user/234
查找命令很方便:
~> function tmp; set f (mktemp); echo $argv > "$f"; echo $f; end
~> http POST localhost:8080/user < (tmp '{ "user": { "name": "john" "age": 10 }}')
如果您有fishshell
,但没有Here Strings,我可以提出以下解决方法:
numpy
答案 2 :(得分:2)
httpie文档中提到的另一种方法是使用JSON file;对于更冗长且嵌套更深的有效负载,这对我来说效果很好。
http POST httpbin.org/post < post.json
答案 3 :(得分:0)
在 Windows 10 (cmd.exe) 上,由于引用规则,语法略有不同。属性/字符串需要用双引号括起来。
http -v post https://postman-echo.com/post address:="{""city"":""london""}"
POST /post HTTP/1.1
Content-Type: application/json
Host: postman-echo.com
User-Agent: HTTPie/2.3.0
{
"address": {
"city": "london"
}
}
您也可以使用 echo 发送整个对象,无需双引号。
echo {"address": {"city":"london"} } | http -v post https://postman-echo.com/post