我在解析BASH中的2個變量的JSON響應時出現問題。我沒有權限安裝jq或jsawk或任何讓生活更輕鬆的酷。我有python,就是這樣。從BASH CURL獲取JSON值使用Python響應
這就是我正在使用的:我有一個curl調用來獲取JSON響應。響應存儲在名爲api_response的變量中。
API_RESPONSE=$(curl --silent -v -H "Content-Type: application/json" -H "MY-Token: $Token" -XPOST -d "$INPUTS" ${MY_BASE}$MY_PROCESS${PROCESS})
這個變量基本上是從API
[{"name":"test-name1", "value" : "test-value1"},{"name" : "test-name2","value" : "test-value2"}]
在過去的響應的價值,我只需要得到響應單個值,並能夠在使用該做的以下
API_RESPONSE=$(curl --silent -v -H "Content-Type: application/json" -H "MY-Token: $Token" -XPOST -d "$INPUTS" ${MY_BASE}$MY_PROCESS${PROCESS} | python -c "import sys, json; print json.load(sys.stdin)[1]['value'])
[輸出]
test-value2
我試圖從單個變量API_RESPONSE中提取兩個JSON值,但我這樣做時出現錯誤。
API_RESPONSE=$(curl --silent -v -H "Content-Type: application/json" -H "MY-Token: $Token" -XPOST -d "$INPUTS" ${MY_BASE}$MY_PROCESS${PROCESS})
myvar1=$($API_RESPONSE | python -c "import sys, json; print json.load(sys.stdin)[0]['value']")
myvar2=$($API_RESPONSE | python -c "import sys, json; print json.load(sys.stdin)[1]['value']")
我得到以下錯誤:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/lib64/python2.6/json/__init__.py", line 267, in load
parse_constant=parse_constant, **kw)
File "/usr/lib64/python2.6/json/__init__.py", line 307, in loads return _default_decoder.decode(s)
File "/usr/lib64/python2.6/json/decoder.py", line 319, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib64/python2.6/json/decoder.py", line 338, in raw_decode
raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded
變量api_response是在工作之前相同的數據。爲什麼它會使用curl調用而不是來自變量?
謝謝,沒有幫助 – Autonomic
Im不在一個位置,爭論年齡的技術。我只需要了解python爲什麼使用curl內聯而不是變量。 – Autonomic