这是我要解析的响应的输出:
[{"name":"UsedMemory","value":{"value":"35054384","type":"java.lang.Long"}},
{"name":"FreeMemory","value":{"value":"7085264","type":"java.lang.Long"}},{"name":"Heap","value":{"value":"42139648","type":"java.lang.Long"}},{"name":"UpTime","value":{"value":"3350544","type":"java.lang.Long"}},{"name":"ProcessCPU","value":{"value":"0.3625301325982962","type":"java.lang.Double"}},{"name":"GcCount","value":{"value":"224","type":"java.lang.Long"}},{"name":"GcTime","value":{"value":"335","type":"java.lang.Long"}}]
我将响应存储在称为$ JVMSTATS的外壳变量中,并希望能够以这样的名称从中检索值:
$jvmStats | python -c "import sys, json; print json.load(sys.stdin)['UsedMemory']"
但是我得到的响应是:
Traceback (most recent call last):
File "<string>", line 1, in <module>
TypeError: list indices must be integers, not str
与JSON合作的新手,不幸的是没有能力在此系统上使用JQ-有人可以指出我的问题吗?根据我在这里看到的所有其他答案,这似乎是一种相当标准的方法 - 所以也许嵌套的值部分是问题?
尝试以下:
jvmStats | python -c "import sys, json; print json.load(sys.stdin)[0]['name']"
这是因为您的JSON首先是列表,然后是字典,因此您需要先索引列表,然后是字典的键。
另外,您只能通过其键,而不是其值索引。