JSONファイルの任意の場所で特定の要素の値を解析します。

JSONファイルの任意の場所で特定の要素の値を解析します。

"sid"for VALUE1(=)789069以降の値を一致させたい。
問題は、行の順序がランダムであることです。

[{"cid":"PWER","data":[{"VALUE1":0}],"sid":"789069","units":"kWm","age":586667},
{"cid":"PWER","data":[{"VALUE2":809}],"sid":"788325","units":"kWm","age":11},
{"cid":"PWER_SUB","data":[{"VALUE3":278}],"sid":"789540","units":null,"age":1},
{"cid":"PWER_SUB","data":[{"VALUE4":319}],"sid":"789093","units":null,"age":38},
{"cid":"PWER_SUB","data":[{"VALUE5":0}],"sid":"789069","units":null,"age":4}

それを一致させる方法についてのアイデアはありますか?

ベストアンサー1

欠落している内容が]最後に挿入されたと仮定すると、これはJSON文書であるため、JSONパーサーを使用して構文解析する必要があります。jq

使用jq:

$ jq -r '.[] | select(.data[0].VALUE1) | .sid' data.json
789069

これにより、JSONオブジェクトの配列が取得され、配列項目の最初の要素VALUE1から呼び出されたキーを持つオブジェクトが選択されますdata。次に、sidそのオブジェクトから項目値を抽出します。

「生出力」-rのオプションです。jqこれがなければ、二重引用符で囲まれた値を受け取ります。

おすすめ記事