使用HTTPie发送嵌套的JSON对象

时间:2016-05-13 16:59:09

标签: json httpie

我正在尝试使用HTTPie来解析发送一些嵌套的JSON对象,但我找不到如何。很清楚如何发送JSON对象但不是嵌套的对象,如

  

{" user":{" name":" john"       "年龄":10}}

4 个答案:

答案 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