Search code examples
jsonhttpie

Sending nested JSON object using HTTPie


I am trying to use HTTPie to parse to send some nested JSON object, but I can not find how. It is pretty clear how to send a JSON object but not a nested one such as

{ "user": { "name": "john" "age": 10 } }


Solution

  • Update for HTTPie 3.0 released in January 2022:

    There’s now built-in support for nested JSON using the HTTPie language:

    $ http pie.dev/post \
      tool[name]=HTTPie \
      tool[about][homepage]=httpie.io \
      tool[about][mission]='Make APIs simple and intuitive' \
      tool[platforms][]=terminal \
      tool[platforms][]=desktop \
      tool[platforms][]=web \
      tool[platforms][]=mobile 
    
    {
        "tool": {
            "name": "HTTPie",
            "about": {
                "mission": "Make APIs simple and intuitive",
                "homepage": "httpie.io"
            },
            "platforms": [
                "terminal",
                "desktop",
                "web",
                "mobile"
            ]
        }
    }
    

    You can learn more about nested JSON in the docs: https://httpie.io/docs/cli/nested-json


    Old answer for HTTPie older than 3.0:

    You can pass the whole JSON via stdin:

    $ echo '{ "user": { "name": "john", "age": 10 } }' | http httpbin.org/post
    

    Or specify the raw JSON as value with :=:

    $ http httpbin.org/post user:='{"name": "john", "age": 10 }'