NEWS
JSON Objekte in Liste
-
@legro Du sollst es einfach in dem JSONATA try Fenster machen - da Du sofort das Ergebnis siehst. Wenn dann alles stimmt brauchst Du den Code nur rauskopieren und im Blockly als JSONATA Ausdruck verwenden.
Wie gesagt mit dem Code:
$.Tarife.*.(Energiepreis * Intervall.Startwert / 1000) ~> $sum()
hast Du alles was Du brauchst.
Gib einfach mal nur das $ ein und schau was im Ergebnisfenster auftaucht, dann $.Tarife usw. - und wenn Du Dir die Ergebnisse erklären kannst ist gut, wenn nicht, dann sag Bescheid.
Um das mit der Doku zu erklären. Das $ steht für das aktuelle Objekt - am Anfang als für alles:
Hier den Auszug aus der Doku:
Dann probierst Du Tarife, also
$.Tarife
Du siehst also als Ergebnis das Array - im Ausgangsobjekt Anfang und Ende gelb markiert.
Nun kommt der Stern - sprich wir wollen alle Tarife bzw. Objekte haben, egal wie sie heißen:
$.Tarife.*
Mit dem Stern hast Du eine Art Wildcard oder Joker - als Platzhalter.
-
-
@legro sagte in JSON Objekte in Liste:
In diesem Beitrag hast du eine Link auf meine Datenstruktur zum Testen referiert. Wie hast du diesen Link erstellt?
Du kannst Dein Fenster teilen:
-
Vielen Dank. Du warst schneller. Ich hatte es mittlerweile auch gefunden.
Hier ist mein neuester Versuch: neue Struktur
-
@legro Ja das Problem ist, dass Du einmal Wert und einmal Stand hast. Bist Du dafür verantwortlich und kannst das vereinheitlichen oder müssen wir das ändern?
-
-
@legro sagte in JSON Objekte in Liste:
Vielen Dank. Du warst schneller. Ich hatte es mittlerweile auch gefunden.
Hier ist mein neuester Versuch: neue Struktur
Als erstes interessieren Dich ja nur die Stände:
Also erweitern
$.ZählerStände.Stände
Ergebnis siehst Du ja
-
@legro sagte in JSON Objekte in Liste:
Hier mein erster Versuch einer Auswertung.
Das Ergebnis ist nicht das gewünschte. Es müssten die Differenzen in den aufeinanderfolgenden Zählerständen (Wert) gebildet werden.
Ja das ist schon klar - aber Du musst erst mal Deine Eigenschaften vereinheitlichen - mal hast Du Wert mal Stand.
-
-
@legro Ja aber das hilft Dir doch nichts. Du willst doch Differenzen und dann die Summen bilden.
-
-
@legro Und nochmal Du musst erst Wert und Stände vereinheitlichen
-
@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?