ich ein JSON-Array haben, die eine Menge von Objekten enthält, und es sieht wie folgt aus:jq: Fügen Sie Werte eines bestimmten Schlüssels für alle Objekte mit gleichen ID
[
{"ID":"A","VALUE":12,"TYPE":"single"},
{"ID":"A","VALUE":17,"TYPE":"single"},
{"ID":"A","VALUE":-7,"TYPE":"single"},
{"ID":"B","VALUE":35,"TYPE":"single"},
{"ID":"B","VALUE":10,"TYPE":"single"},
{"ID":"B","VALUE":15,"TYPE":"single"},
{"ID":"C","VALUE":0,"TYPE":"single"},
{"ID":"C","VALUE":13,"TYPE":"single"},
{"ID":"C","VALUE":20.5,"TYPE":"single"}
]
Nun würde Ich mag alle Werte hinzufügen für jede ID und neue Objekte mit den Ergebnissen wie folgt aus:
{"ID":"A","VALUE":22,"TYPE":"total"},
{"ID":"B","VALUE":60,"TYPE":"total"},
{"ID":"C","VALUE":23.5,"TYPE":"total"}
Zusätzlich sollten die resultierenden Objekte zu der anfänglichen Anordnung hinzugefügt werden.
Ich bin ziemlich neu zu jq, also habe ich etwas Forschung. Tatsächlich weiß ich, wie die Summen für eine ID zu erhalten:
.[] | {ID: .ID, VALUE: .VALUE, TYPE: "total"}
Aber wie bekomme ich das Format, das ich von hier aus will:
[.[] | select(."ID"=="A").VALUE]|add
-> 22
und wie neue Objekte zu schaffen? Mit einer Schleife?
Danke!
Danke! Das funktioniert, und ja, es sollte 33.5 sein :) – user2556342