私はこのようなJSONを持っています
{
"status": "InProgress",
"transactionId": "1652807586",
"startTime": "2022-05-17T17:13:06Z",
"viewIdContexts": {
"dtve2.2": {
"subgraphStatusCounts": {
"end": 10,
"start": 4,
"startReturned": 127
}
}
}
}
終了と開始を除いてjsonに追加することで、予想される結果は次のようになります。
{
"status": "InProgress",
"transactionId": "1652807586",
"startTime": "2022-05-17T17:13:06Z",
"viewIdContexts": {
"dtve2.2": {
"subgraphStatusCounts": {
"end": 10,
"start": 4,
"result": 6,
"startReturned": 127
}
}
}
}
jqでこれを達成する方法
ベストアンサー1
jq '.result = .end - .start'
これは入力JSONドキュメントを読み、最上位キーをresult
減算する結果に設定します。start
end
実行例:
$ echo '{ "end": 10, "start": 4 }' | jq '.result = .end - .start'
{
"end": 10,
"start": 4,
"result": 6
}
jq
-c
「コンパクト」出力のオプションと一緒に使用します。
更新質問でJSONドキュメントを使用して関連部分を選択し、|=
結果()で更新します。
jq '.viewIdContexts."dtve2.2".subgraphStatusCounts |= (.result = .end - .start)'
キーの1つにドットが含まれているため、引用符で囲む必要があります。
この答えの最初のコマンドは、次のコマンドを単純化したものです。
jq '. |= (.result = .end - .start)'
これは、答えのこの部分で、より長いコマンドにどれだけ似ているかを示しています。