JSON解析:条件付きキーの抽出、空の場合は別のキーに置き換える

JSON解析:条件付きキーの抽出、空の場合は別のキーに置き換える

私はJSONですjq

次のJSONドキュメントがあります。

{
  "initial": [
    {
      "HIGH": null,
      "LOW": "XXX",
      "LARGE": "yyy",
      "variant": "MAIN"
    },
    {
      "HIGH": "ACE",
      "LOW": "XXX",
      "LARGE": "yyy",
      "variant": "Loren"
    }
  ]
}

私のコード:

jq -r '.initial[] | {Rank: .HIGH, Name: .variant} | join(",")'

出力:

,MAIN
ACE,Loren

予想出力:

yyy,MAIN
ACE, Loren

そうであれHIGHばにnull戻りLARGE、そうでnullあればに戻りますLOW

もしそうなら、variantデフォルト値nullを使用してくださいMAIN

誰でも私を助けることができますか?

私が試したいくつかのチュートリアルでは:

jq -r '.initial[] | {Rank: (map(if (.HIGH == null or .HIGH == "null" or .HIGH == "") then .LARGE else .HIGH end)), Name: .variant}'

しかし、これによりエラーが発生しました。

jq: error (at <stdin>:16): Cannot index string with string "HIGH"

ベストアンサー1

欲しい//

jq '.initial[] | [.HIGH // .LARGE // .LOW, .variant // "MAIN"] | join(",")'

おすすめ記事