2016-11-19 2 views
-1

Ich habe eine JSON-Datei als Antwort erstellt, indem Sie mehrere CURL-Anweisungen (GET-Anforderungen an einen Dienst) parallel ausführen.Analyse einer JSON-Datei mit mehreren JSONs

Jetzt, wenn ich versuche, die JSON-Datei mit Python zu analysieren ausfällt als die Datei mehrere JSONs hat

hängten

Fehler:

Fehler: Parse error on line 1: ... CT_AGGREGATE "}] }]}}} {"serviceResponseTim -----------------------^ Erwartung 'EOF', '}', ',', ']' erwartet, '{'

Beispiel in der Datei:

{"serviceResponseTime": 510, ........... .......: [{"categoryId": 28162, "metricValue": 97, "Tage": "NONE" , "metricMappedType": "PRODUCT_AGGREGATE" }]}]}]} {"serviceResponseTime": 387, "Produkte": [{"productReferenceId": ................ ...

Wie Sie sehen, sind dies 2 Antworten, die von 2 curl-Anweisungen erhalten wurden, aber als ich sie parallel unter Verwendung von xargs lief, fügte sie die Ausgabe in 1 Zeile hinzu.

Jetzt ist mein Problem das Parsen dieser Datei.

Kann jemand einen Weg vorschlagen, entweder die Ausgabe von curl-Befehlen in separate Zeilen in der Datei zu setzen.

Oder eine grobe Art und Weise dachte ich war, wenn ich den Teil vom Anfang der Datei bis "}]}]}]} {" extrahieren könnte, aus der aktuellen Datei schneiden und in eine andere Datei und führen Sie den JSON-Parser auf der Datei, die nur 1 JSON o/p hätte. Wiederholen Sie diese In-Schleife, bis die Originaldatei leer ist, nachdem wir jeden JSON daraus ausgeschnitten haben. Jetzt ist mein Problem, ich bin nicht in der Lage, am Anfang der Zeile zu}}}}}}} {zu extrahieren.

Auch alle JSON o/ps sind in 1 Zeile angehängt und sind nicht auf separaten Zeilen sonst hätte ich zeilenweise gelesen.

Kann mir hier jemand helfen?

Antwort

1

Angenommen, Sie haben diese Eingabedatei haben:

{"name": "foo"}{"name": "bar"} 

Sie können das jq Befehl:

jq -s . input.file 

zu übertragen input.file in:

[ 
    { 
    "name": "foo" 
    }, 
    { 
    "name": "bar" 
    } 
] 

Ich hoffe, dass hilft

+0

ich Inst Habe jq auf meinem Mac gecallt und den Befehl ausgeführt, aber es steht -sh: jq: command not found – donny