1 Pluspunkt 0 Minuspunkte

Ich habe ein JSON Array in dieser Form:

[

  {

    "Name": "Notepad4 (AVX2)",

    "Id": "zufuliu.notepad4.AVX2",

    "AvailableVersions": [

      "25.01r5618",

      "24.11r5548",

      "24.09r5472",

      "24.07r5332"

    ]

  },

  {

    "Name": "BrowserSelect -- select browser dynamically",

    "Id": "zumoshi.BrowserSelect",

    "AvailableVersions": [

      "1.4.1"

    ]

  },

  {

    "Name": "Pomodoro Logger",

    "Id": "zxch3n.PomodoroLogger",

    "AvailableVersions": [

      "0.6.3",

      "0.5.3"

    ]

  },

  {

    "Name": "micro",

    "Id": "zyedidia.micro",

    "AvailableVersions": [

      "2.0.14",

      "2.0.13",

      "2.0.11"

    ]

  }

]

So kann ich das Feld Name jedes Eintrages anzeigen.

curl -s "https://<api-url>/repository.php?token=test" | jq -r '.[] | .Name'

Wie kann ich jeweils 2 Felder davon mit jq anzeigen? Z.B Name und das erste Element vom Array AvailableVersions.

curl -s "https://<api-url>/repository.php?token=test" | jq -r '.[] | .Name .AvailableVersions[0]'
von  

1 Antwort

0 Pluspunkte 0 Minuspunkte

Setze ein ".[]" vor ".AvailableVersions" um das erste Element anzuzeigen.

curl https://<api-url>/repository.php?token=test | jq -r '.[].Name + " " + .[].AvailableVersions[0]'

Wenn du alle Versionen als Comma-separierten String anzeigen möchtest kannst du das mit der join() Funktion von jq.

curl -s "https://<api-url>/repository.php?token=test" | jq -r '.[] | .Name + " " + (.AvailableVersions | join(", "))'
von (1.3k Punkte)