我在解析BASH中的2个变量时遇到了一个问题。我无法安装jq或jsawk或任何让生活更轻松的酷东西。我有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的响应的值
^{pr2}$
在过去,我只需要从响应中获取一个值,并且可以使用以下方法来实现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_响应中提取两个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 "", line 1, in
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响应是相同的。为什么它会使用curl调用而不是from变量?在