Httpie: Salah mengurai JSON

Dibuat pada 13 Apr 2017  ·  7Komentar  ·  Sumber: httpie/httpie

Hai,

Pertama-tama, httpie adalah perangkat lunak yang luar biasa. Saya tidak ingat berapa banyak rekan yang saya rekomendasikan untuk menggunakannya.

Ada masalah yang saya temui. Menurut spesifikasi yang menyediakan params JSON dilakukan melalui operator := . Tetapi meluncurkan httpie 0.9.9 dengan params ini:

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

Menghasilkan pesan tentang JSON yang tidak valid. Tapi ["test string"] valid JSON afaik.

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

Mungkin ada yang bisa menjelaskan apa yang tampaknya salah?

Komentar yang paling membantu

@poskadesign Coba ini:

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

Saya tidak terlalu akrab dengan baris perintah Windows, tetapi menemukan https://stackoverflow.com/questions/17205292/quotes-around-quotes-in-windows-command-line yang serupa.

Semua 7 komentar

Koreksi saya jika saya salah, tetapi bukankah objek JSON biasanya dalam format {"key":"value"}?

@poskadesign perintahnya terlihat oke dan berfungsi untuk saya di Bash. Ini bisa menjadi masalah pelarian jika Anda menggunakan shell lain.

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

Hai, Saya seorang pemula untuk proyek open source. Saya ingin bekerja pada masalah ini. Bisakah Anda memberi saya info lebih lanjut?

@poskadesign OS dan shell apa itu? Sepertinya shell Anda menggunakan tanda kutip ganda untuk menghindari pemisahan kata pada spasi, tetapi kemudian meninggalkan tanda kutip tunggal dalam argumen.

Kira-kira seperti itu.. http POST https://httpbin.org/post evil=witch casts:='["spells", "curses"]' --json

@sriyanfernando masih tidak berfungsi (httpie 0.99, Windows 10x64, Python 3.61, Prompt Perintah Windows standar):

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 Coba ini:

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

Saya tidak terlalu akrab dengan baris perintah Windows, tetapi menemukan https://stackoverflow.com/questions/17205292/quotes-around-quotes-in-windows-command-line yang serupa.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

maciej picture maciej  ·  4Komentar

ghost picture ghost  ·  5Komentar

a-x- picture a-x-  ·  7Komentar

pyvotal-cguers picture pyvotal-cguers  ·  5Komentar

rashthedude picture rashthedude  ·  3Komentar