NEWS
JSON Objekte in Liste
-
@mickym sagte in JSON Objekte in Liste:
@legro Und nochmal Du musst erst Wert und Stände vereinheitlichen
Was meinst du damit?
Ich habe das Gefühl, ich will wohl - zumindest für den Anfang - zu viel auf einmal.
Ich habe in diesem JSON drei ARRAYs für Daten zu Bezug, Verkauf und Erzeugt zu erfassen. Die für Bezug referierte Summenbildung will ich natürlich später für alle drei Felder realisieren.
-
@legro Ich muss auch tüfteln - das ist nicht banal.
Aber ich versuchs mal.
. Wie gesagt das doofe ist erst mal dass Du Stände und Wert hast.
-
$sum($.ZählerStände.Stände.(Energiepreis*Wert/1000))
Wir müssen hier wohl mit Indizes arbeiten. Schließlich ist der nachfolgende Zählerstand um den vorausgegangenen zu verringern. Oder wir bauen eine Redundanz ein: In jedem Datensatz arbeite ich mit Start- und Endwert, wobei der Startwert der vorausgegangene Endwert ist.
-
@legro sagte in JSON Objekte in Liste:
$sum($.ZählerStände.Stände.(Energiepreis*Wert/1000))
Wir müssen hier wohl mit Indizes arbeiten. Schließlich ist der nachfolgende Zählerstand um den vorausgegangenen zu verringern.
Nochmal Du hast Wert und Stand und das ist Mist oder sogar gemischt:
Aber ich versuchs mal
-
Oh je, das hatte ich nicht gesehen. Natürlich wollte ich das alles gleich halten. Ich ändere dies umgehend.
-
@legro sagte in JSON Objekte in Liste:
Oh je, das hatte ich nicht gesehen. Natürlich wollte ich das alles gleich halten. Ich ändere dies umgehend.
Na dann wird es viel einfacher - auf sowas musst Du natürlich achten.
-
Oh je, schon wieder habe ich etwas falsch gemacht.
Ändere ich die Bezeichner Stand -> Wert, so summiert er über alle ARRAYs Bezug, Verkauf und Erzeugt. Das will ich doch gar nicht. Ich möchte in den einzelnen ARRAYs Bezug, .. usw. die Summen bilden. Es muss also eine Selektion auf ein einzelnes ARRAY rein, aber die habe keinen Namen, sondern bloß Felder mit den entsprechenden Namen.
-
@legro Welcher Energiepreis soll denn genommen werden, der Letzte?
-
Jeweils für jedes ARRAY Bezug, Verkauf und Erzeugt soll die Summe getrennt gebildet werden.
-
@legro Schau mal ob das so passt:
-
Hier habe ich die ARRAYs umgearbeitet: https://try.jsonata.org/Pvw90D0hU
Mit $sum($.ZählerStände.Bezug.(Energiepreis*Wert/1000)) bekomme ich die Summe für Bezug. Auf diese Weise kann ich alle Summen getrennt bilden.
Bleibt nun noch die richtige Berechnung mit Differenzbildung innerhalb eines jeden ARRAYs.
-
@legro sagte in JSON Objekte in Liste:
Hier habe ich die ARRAYs umgearbeitet: https://try.jsonata.org/Pvw90D0hU
Hast Du Dir meins angeschaut - also so bringt das nichts. Ich bin sonst fertig jetzt. Du musst schon auf meine Fragen antworten - ich habe jetzt den letzten Energiepreis genommen.
Das ist jetzt meine finale Lösung: https://try.jsonata.org/4kMKZSd1n
-
Um dies zu üben sollten wir die Aufgabenstellung vereinfachen. Im Prinzip wollen wir ja innerhalb eines ARRAY ..
a = [0,2,4,7,9]
die Unterschiede in den Zahlen aufsummieren.
-
@legro Hast Du Dir meine Lösung denn überhaupt angeschaut????
War noch ein Fehler drin (Punkt vor Strich).
-
@mickym sagte in JSON Objekte in Liste:
@legro Hast Du Dir meine Lösung denn überhaupt angeschaut????
Ich bin doch noch dabei, das Ganze nachzuvollziehen. So schnell bin ich als blutiger Anfänger doch nicht. Ich benötige offenbar länger das zu verstehen als du zum Erstellen.
-
Jetzt ist's auch mir klar. Ich musste erst einmal verdauen, dass du ein neues Objekt innerhalb der Berechnungen generieren lässt.
Ich denke ich hab's kapiert.
Vielen Dank für deine phantastische Hilfe.
-
@legro sagte in JSON Objekte in Liste:
@mickym sagte in JSON Objekte in Liste:
@legro Hast Du Dir meine Lösung denn überhaupt angeschaut????
Ich bin doch noch dabei, das Ganze nachzuvollziehen. So schnell bin ich als blutiger Anfänger doch nicht. Ich benötige offenbar länger das zu verstehen als du zum Erstellen.
Nee darum gehts nicht, sondern ich hab Dir doch Links geschickt, wie es funktionieren könnte und Dich gefragt ob wir den letzten Energiepreis nehmen? Da kam halt nichts.
Jetzt schau es Dir halt mal an: https://try.jsonata.org/U5Zi90lV2
Ich habs so mal nachgerechnet.
Beim Bezug: Verbrauch ist 482512-468303 = 14209 /1000 = kW
Preis ist dann der letzte Preis also *0,3328Ergibt 4,7287552
Also insgesamt bekomme ich 32,91€ raus.
$.ZählerStände.{"Name":Name, "Verbrauch" : (Stände[1].Wert -Stände[0].Wert) / 1000 * Stände[1].Energiepreis }.Verbrauch~>$sum~>$round(2)
Ich hab die 1000 Umrechnung in kW noch umgestellt.
-
Da kam halt nix
Wie gesagt, ich war noch dabei das Ganze zu verdauen. Außerdem hatte ich meine Datenstruktur ja nochmals geändert und den ARRAYs Bezeichner zugeordnet. Nun versuche ich mal zur Übung in dieser neuen Struktur das Ganze zu lösen.
Da habe ich ja große Glück gehabt, dir begegnet zu sein.
-
@legro Na ich bin hier nur Gast - weil ich kein Blockly mag und alles mit NodeRed mache und das kann mit Objekten viel besser umgehen und dort nutzt man auch viel JSONATA. Dann weiß ich halt, dass im Javascript Adapter also sowohl im Blockly, also auch im Javascript diese phantastische Bibliothek implementiert wurde. Deshalb mache ich hin und wieder die Blockly user darauf aufmerksam, dass man das auch nutzen kann - nicht muss. Ansonsten mische mich in der Regel bei Puzzlern weniger ein.
-
@mickym sagte in JSON Objekte in Liste:
@legro .. weil ich kein Blockly mag und alles mit NodeRed mache ..
Nun ja, auf meine alten Tage werde ich die Welt nicht mehr aus den Angeln heben können. Ich bleibe daher zunächst einmal bei Blockly, weil ich's halt leidlich kenne.
Nun setze ich mich einmal daran, die Lösungen nachzurechnen. Irgendwie habe ich das Gefühl, dass mit der Summenbildung noch etwas nicht stimmt.
Darüber hinaus versuche ich mich einmal das Ganze mit der neuen Datenstruktur (benannte ARRAYs für Bezug, Verkauf und Erzeugt) zu realisieren.
Dank deiner Hilfestellung habe ich einen Einblick gewonnen, den ich ansonsten wohl erst nach Stunden erreicht hätte. Danke!