为什么我不能使用Shell/Python解析此JSON输出



这是我要解析的响应的输出:

[{"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首先是列表,然后是字典,因此您需要先索引列表,然后是字典的键。

另外,您只能通过其键,而不是其值索引。

最新更新