Ich habe eine JSON-Datei 'OpenEnded_mscoco_val2014.json'.Die JSON-Datei enthält 121.512 Fragen.
Hier einige Beispiel:Convert JSON mit jq basierend auf bestimmten Einschränkungen
"questions": [
{
"question": "What is the table made of?",
"image_id": 350623,
"question_id": 3506232
},
{
"question": "Is the food napping on the table?",
"image_id": 350623,
"question_id": 3506230
},
{
"question": "What has been upcycled to make lights?",
"image_id": 350623,
"question_id": 3506231
},
{
"question": "Is this an Spanish town?",
"image_id": 8647,
"question_id": 86472
}
]
I verwendet jq -r '.questions | [map(.question), map(.image_id), map(.question_id)] | @csv' OpenEnded_mscoco_val2014_questions.json >> temp.csv
json in csv zu konvertieren.
Aber hier Ausgabe in CSV ist Frage gefolgt von image_id was ist, was oben Code tut.
Die erwartete Ausgabe lautet:
"What is table made of",350623,3506232
"Is the food napping on the table?",350623,3506230
Auch ist es möglich, nur die Ergebnisse mit image_id <= 10000
und group questions having same image_id
zu filtern? z.B. 1,2,3 Ergebnis von JSON kann kombiniert werden, um 3 Fragen zu haben, 1 image_id, 3 question_id.
EDIT: Das erste Problem wird durch possible duplicate question
gelöst. Ich würde gerne wissen, ob es möglich ist, Vergleichsoperator auf der Befehlszeile in jq zum Konvertieren von JSON-Datei aufrufen. In diesem Fall erhalten Sie alle Felder von json, wenn nur image_id <= 10000
.
Nicht ganz sicher, was Ihre erste Frage hier ist? – JosephGarrone
Mögliches Duplikat von [Konvertieren von einfachem JSON in CSV mithilfe von jq?] (Http://stackoverflow.com/questions/32960857/how-to-convert-arbirtrary-simple-json-to-csv-using-jq) –
Ich möchte Ausgabe mit image_id mit Wert <= 10000 mit jq filtern, da die Datei zu groß ist, so dass die Verwendung von json_load() und das Vergleichen viel Speicher benötigen. – SupposeXYZ