0
は、私が解析しようとしています応答から出力されます:なぜシェル/ 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を使用する能力を持っていませんこのシステムでは、ある人が私に問題を指摘することができますか?これは、私がここに見られる他のすべての回答によれば、かなり標準的なアプローチのようです - おそらくネストされた価値のある部分が問題ですか?
もっと見る - ありがとう!形式が私がPythonで達成したいものと矛盾していることを知り始めました。私は本質的に1つのライナーがk = vのペアを出力することを望む。私はJSONのプロバイダではなく、毎回同じ順序で線が出るという保証はないので、指標による作業は厳しいものになるでしょう。おそらくsedコマンドでうまくいくでしょう! – Seer