Httpie: Analizando JSON incorrectamente

Creado en 13 abr. 2017  ·  7Comentarios  ·  Fuente: httpie/httpie

Oye,

En primer lugar, httpie es una magnífica pieza de software. No recuerdo a cuántos colegas recomendé usarlo.

Hay un problema que encontré. De acuerdo con la especificación que proporciona los parámetros JSON, se realiza a través del operador := . Pero al iniciar httpie 0.9.9 con estos parámetros:

http post localhost/example/ param1="a b c" param2=d jparam:='["test string"]'

Da como resultado un mensaje sobre JSON no válido. Pero ["test string"] es JSON válido afaik.

http: error: "jparam:='[test string]'": Expecting value: line 1 column 1 (char 0)

¿Quizás alguien podría arrojar algo de luz sobre lo que parece estar mal?

Comentario más útil

@poskadesign Prueba esto:

http post localhost/example/ param1="a b c" param2=d jparam:="[\"test string\"]"

No estoy muy familiarizado con la línea de comandos de Windows, pero encontré https://stackoverflow.com/questions/17205292/quotes-around-quotes-in-windows-command-line que es similar.

Todos 7 comentarios

Corrígeme si me equivoco, pero ¿un objeto JSON normalmente no tiene el formato {"clave": "valor"}?

@poskadesign el comando se ve bien y me funciona en Bash. Podría ser un problema de escape si usa algún otro shell.

$ http -v httpbin.org/post  param1="a b c" param2=d jparam:='["test string"]'
POST /post HTTP/1.1
Accept: application/json, */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Length: 61
Content-Type: application/json
Host: httpbin.org
User-Agent: HTTPie/0.9.9

{
    "jparam": [
        "test string"
    ],
    "param1": "a b c",
    "param2": "d"
}
HTTP/1.1 200 OK
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: *
Connection: keep-alive
Content-Length: 568
Content-Type: application/json
Date: Sun, 14 May 2017 10:58:53 GMT
Server: meinheld/0.6.1
Via: 1.1 vegur
X-Powered-By: Flask
X-Processed-Time: 0.000903844833374

{
    "args": {},
    "data": "{\"param1\": \"a b c\", \"param2\": \"d\", \"jparam\": [\"test string\"]}",
    "files": {},
    "form": {},
    "headers": {
        "Accept": "application/json, */*",
        "Accept-Encoding": "gzip, deflate",
        "Connection": "close",
        "Content-Length": "61",
        "Content-Type": "application/json",
        "Host": "httpbin.org",
        "User-Agent": "HTTPie/0.9.9"
    },
    "json": {
        "jparam": [
            "test string"
        ],
        "param1": "a b c",
        "param2": "d"
    },
    "origin": "…",
    "url": "http://httpbin.org/post"
}

Hola, soy un novato en proyectos de código abierto. Me gustaría trabajar en este tema. ¿Podría proporcionarme más información?

@poskadesign ¿Qué sistema operativo y shell es ese? Parece que su shell consumió las comillas dobles para evitar la división de palabras en el espacio, pero luego dejó las comillas simples en el argumento.

Es algo así ... http POST https://httpbin.org/post wicked = witch casts: = '["hechizos", "maldiciones"]' --json

@sriyanfernando todavía no funciona (httpie 0.99, Windows 10x64, Python 3.61, símbolo del sistema de Windows estándar):

C:\Users\Me>http post localhost:8000/mail/ recipients:='["[email protected]"]' --json
usage: http [--json] [--form] [--pretty {all,colors,format,none}]
            [--style STYLE] [--print WHAT] [--headers] [--body] [--verbose]
            [--all] [--history-print WHAT] [--stream] [--output FILE]
            [--download] [--continue]
            [--session SESSION_NAME_OR_PATH | --session-read-only SESSION_NAME_OR_PATH]
            [--auth USER[:PASS]] [--auth-type {basic,digest}]
            [--proxy PROTOCOL:PROXY_URL] [--follow]
            [--max-redirects MAX_REDIRECTS] [--timeout SECONDS]
            [--check-status] [--verify VERIFY]
            [--ssl {ssl2.3,ssl3,tls1,tls1.1,tls1.2}] [--cert CERT]
            [--cert-key CERT_KEY] [--ignore-stdin] [--help] [--version]
            [--traceback] [--default-scheme DEFAULT_SCHEME] [--debug]
            [METHOD] URL [REQUEST_ITEM [REQUEST_ITEM ...]]
http: error: "recipients:='[[email protected]]'": Expecting value: line 1 column 1 (char 0)

@poskadesign Prueba esto:

http post localhost/example/ param1="a b c" param2=d jparam:="[\"test string\"]"

No estoy muy familiarizado con la línea de comandos de Windows, pero encontré https://stackoverflow.com/questions/17205292/quotes-around-quotes-in-windows-command-line que es similar.

¿Fue útil esta página
0 / 5 - 0 calificaciones