Jq ---入れ子になったjsonをcsvに変換する

Jq ---入れ子になったjsonをcsvに変換する

以下のサンプルJSONがあります。

{
  "data": [
    {
      "name": "city",
      "LIST": {
        "ID": [
          {
            "value": "ny",
            "name": "US"
          },
          {
            "value": "lon",
            "name": "GB"
          },
          {
            "value": "Toronto",
            "name": "CA"
          }
        ]
      }
    },
    {
      "name": "city1"
    }
  ]
}

次の値を取得したい

city,ny

city1,

私はname = "US"の値だけが欲しいですjq

配列の各要素の最大値は1 name= "US"ですdata。 ="US"がない場合はname空またはNULLになります。上記の例では、2番目のレコードに= "US"がない場合、出力はまたはにnameなります。city1,blankcity1,

ベストアンサー1

data要素が次のようになるとします。最大.LIST.ID配列の1つの要素nameは次のとおりですUS

jq -r <file '.data[] |
  [ .name, (.LIST.ID[] | select(.name == "US").value)? // null ] |
  @csv'

できること:

  1. 配列のすべての要素を返す(保持)しますdata
  2. の各要素に対して、以下をdata含む2要素配列(CSV書式設定に必要)を作成します。
    1. name各要素dataの属性値
    2. などの配列要素のプロパティ値value(そうでない場合は、inを使用して完全に空のフィールドではなくCSV出力から二重引用符で囲まれたフィールドを取得できます)が完全に欠落しています。エラーは発生しません。.LIST.IDnameUSnull""null?.LIST.ID
  3. 結果配列のリストをCSVデータとしてレンダリングします。

おすすめ記事