Httpie: JSONを誤って解析する

作成日 2017年04月13日  ·  7コメント  ·  ソース: httpie/httpie

おい、

まず第一に、httpieは素晴らしいソフトウェアです。 何人の同僚に勧めたのか思い出せません。

私が遭遇した問題があります。 仕様によると、JSONパラメーターの提供は:=演算子を介して行われます。 しかし、これらのパラメータを使用してhttpie0.9.9を起動します。

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

無効なJSONに関するメッセージが表示されます。 ただし、 ["test string"]は有効なJSONafaikです。

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

たぶん、誰かが間違っているように見えることについていくつかの線を引くことができますか?

最も参考になるコメント

@poskadesignこれを試してください:

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

私はWindowsのコマンドラインにあまり詳しくありませんが、 https://stackoverflow.com/questions/17205292/quotes-around-quotes-in-windows-command-lineに似ています。

全てのコメント7件

私が間違っている場合は訂正してください。ただし、JSONオブジェクトは通常{"key": "value"}の形式ではありませんか?

@poskadesignコマンドは問題ないように見え、Bashで機能します。 他のシェルを使用している場合は、エスケープの問題になる可能性があります。

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

こんにちは、私はオープンソースプロジェクトの初心者です。 この問題に取り組みたいと思います。 詳細を教えていただけますか?

@poskadesignそれはどのOSとシェルですか? シェルがスペースでの単語分割を避けるために二重引用符を消費したようですが、引数に一重引用符を残しました。

それはそのようなものです..httpPOST https://httpbin.org/post wicked = witch casts:= '["spells"、 "curses"]' --json

@sriyanfernandoはまだ機能しません(httpie 0.99、Windows 10x64、Python 3.61、標準のWindowsコマンドプロンプト):

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これを試してください:

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

私はWindowsのコマンドラインにあまり詳しくありませんが、 https://stackoverflow.com/questions/17205292/quotes-around-quotes-in-windows-command-lineに似ています。

このページは役に立ちましたか?
0 / 5 - 0 評価