如何使用 HTTPie 发送 POST 嵌套 JSON 请求?

How to send POST request for Nested JSON using HTTPie?

我想使用 HTTPieWindows POST 发送请求 shell

JSON 输入看起来像:

{
    "name": "pub1",
    "email": "support@pub1.com",
    "address": {
        "city": "new york",
        "pincode": 12345
    }
}

我试过了:

http -v POST http://127.0.0.1:8000/publication/ name=pub1 email=support@pub1.com address:="{"city":"new york", "pincode":12345}"

它给出以下错误:

http: error: "address:={city: new": Expecting property name enclosed in double quotes: line 1 column 2 (char 1)

我使用 Postman 及其 Working 完成了此操作, 但我想知道如何使用 httpie?

我也在 SOF 和 GitHub 上尝试了可用的解决方案,但无法弄清楚问题是什么。

Windows shell 引用规则不同,因此您不能像所有 osx/linux 示例那样使用带单引号的 :='<json>',您需要双引号。

您收到的错误消息是“Expecting 属性 name enclosed in double quotes”,但这令人困惑,因为它 在双引号中肉眼可见。

转义 json 文字中的双引号将执行此操作。您可以通过将引号字符加倍来实现此目的,如 "".

"city" => ""city""

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"
    }
}

如果愿意,您还可以使用回声技巧来避免所有引用。此方法类似于使用文件,因此您指定整个 json 文档并且 而不是 个别字段。

echo {"address": {"city":"london"} } | http -v post https://postman-echo.com/post