と条件付きでオブジェクトのプロパティを変更します。私はJSONのこのサンプル持つJQ
[
{
"name": "val1",
"expire": { "$value": 10 }
},
{
"name": "val2",
"expire": 20
},
{
"name": "val3"
}
]
を私はJQと、このフォームに変換したい:
[
{
"name": "val1",
"expire": 10
},
{
"name": "val2",
"expire": 20
},
{
"name": "val3",
"expire": null
}
]
私があれば、それはだ見つけたものすべて-then-else、しかし、私は正しい表現を構築するための手がかりがないように見えます。
条件は、型チェックに基づいて、それが正しい方法のように見えますが、ちょうど-timeエラーを「コンパイル」を返す、私はそれを修正する方法がわからない:
.[] | { name, expire: (if .expire then (if type(.expire) == "number" then .expire else .expire."$value" end) else null end) }
条件"$value"
チェックに基づいて、私が理解したようならば、ここでの内部で、問題を
.[] | { name, expire: (if .expire then (if .expire."$value"? then .expire."$value" else .expire end) else null end) }
第2の目的は、.expire."$value"?
でチェックところ、エラーはエラーのため結果からスローされたオブジェクトが削除されました。何とか第2の目的を除外する。
map(.expire |= if type == "object" then .["$value"]
elif type == "number" then . else null end)
ありがとうございました!できます :) –