Ich versuche, ein JSON mit verschachtelten Objekten und Arrays in eine CSV-Datei zu konvertieren. Die Struktur ist:Konvertieren noch ein JSON zu CSV mit jq
{
"Date": {
"Value": "2017-11-17T00:00:00"
},
"ThisOne": false
}
{
"Date": {
"Value": "2017-11-17T00:00:00"
},
"ThisOne": true,
"Groups": {
"10": {
"Id": "10",
"SomeUnnecessaryObject": true
},
"11": {
"Id": "11",
"RequiredObject": {
"SEeminGlyRANdOMStRiNG": {
"Value1": "2",
"Value2": "3",
"Units": [
"1",
"5"
]
}
}
},
"12": {
"Id": "12",
"RequiredObject": {
"AnOthEr321": {
"Value1": "1",
"Value2": "9",
"Units": [
"2"
]
}
}
}
}
}
(Hoffnung Ich habe die Klammern rechts) und ich versuche, es zu konvertieren csv:
date|value1|value2|group|unit1|unit2|unit3|unit4|unit5
2017-11-17T00:00:00|2|3|11|1|0|0|0|1
2017-11-17T00:00:00|1|9|12|0|1|0|0|0
Die Gruppen laufen von 10 bis 99 und Einheiten von 1 bis 5 Die SEeminGlyRANdOMStRiNG
ist eine scheinbar zufällige Zeichenfolge. Die Objekte, die ich haben möchte, haben RequiredObject
, aber es gibt Top-Level-Objekte, die es nicht haben. Ich habe Objekte mit select(.ThisOne==true)
gekürzt, weil ich nicht verstehe, wie man von .Group ... RequiredObject ... Value1
mit sich ändernden Werten im Pfad referenziert. Möglicherweise gibt es Objekte auf oberster Ebene, die ThisOne==true
haben, aber keine RequiredObject
s.
BTW, was ist: '.RequiredObject // {}'? –
'expr // value' bedeutet Rückgabewert, wenn' expr' false oder null ist. Siehe [Alternativer Operator //] (http://stedolan.github.io/jq/manual/#Alternativeoperator:://) – jq170727
Auch da es keine Notwendigkeit für die scheinbar zufälligen String-Schlüssel gibt, könnte dies etwas mehr vereinfacht werden. Anstelle von '| .RequiredObject // {} | Schlüssel [] als $ k | . [$ k] 'Sie könnten einfach' .RequiredObject [] verwenden? 'lassen Sie das ['? '] (https://stedolan.github.io/jq/manual/#. []?) mit fehlenden RequiredObjects umgehen. – jq170727