Verarbeiten Sie einen großen JSON-Stream mit jq

Ich erhalte einen sehr großen JSON-Stream (mehrere GB) voncurl und versuche es mit @ zu verarbeitjq.

Die relevante Ausgabe, mit der ich analysieren möchtejq wird in ein Dokument gepackt, das die Ergebnisstruktur darstellt:

{
  "results":[
    {
      "columns": ["n"],

      // get this
      "data": [    
        {"row": [{"key1": "row1", "key2": "row1"}], "meta": [{"key": "value"}]},
        {"row": [{"key1": "row2", "key2": "row2"}], "meta": [{"key": "value"}]}
      //  ... millions of rows      

      ]
    }
  ],
  "errors": []
}

Ich möchte das @ extrahierrow Daten mitjq. Das ist einfach:

curl XYZ | jq -r -c '.results[0].data[0].row[]'

Ergebnis

{"key1": "row1", "key2": "row1"}
{"key1": "row2", "key2": "row2"}

Allerdings wartet dies immer biscurl abgeschlossen

Ich habe mit dem @ gespie--stream -Option, die dafür gemacht ist. Ich habe den folgenden Befehl ausprobiert, wartet aber auch, bis das vollständige Objekt von @ zurückgegeben wircurl:

curl XYZ | jq -n --stream 'fromstream(1|truncate_stream(inputs)) | .[].data[].row[]'

Gibt es eine Möglichkeit, zum @ zu springedata field und beginne mit dem Parsenrow eins nach dem anderen, ohne auf das Schließen von Tags zu warten?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage