NEWS
JSONATA Filter auf json array
-
-
@___manalishi Damit kannst Du direkt im JSONATA Editor mit Deinen Daten arbeiten:
-
@mickym Vielen Dank! Ich habe die Syntax in der kurzen Zeit noch nicht 100%ig verstanden, aber es führt bei https://try.jsonata.org/nXy0l6TXc zu dem gewünschten Ziel.
Im IOBroker bekomme ich aktuell noch die Meldung "undefined"
-
@___manalishi
gelöst. Danke für deine Unterstützung! -
Ich bekomme beim parsen des JSON files in IOBroker leider "undefined", obwohl im Exerciser ein Ergebnis angezeigt wird. Was mache ich hier falsch?
-
@___manalishi Machmal vor das data ein $. Zeichen - damit er den aktuellen Kontext nimmt
$.data.rows[0].fundingRate
und prüfe ggf. mit dem debug puzzle Teil, dass result auch ein Ergebnis zurückliefert.
-
-
-
@___manalishi Ja Du hast auch Objekt nach JSON konvertiert und nicht JSON nach Objekt
Du brauchst dieses Teil
und nicht umgekehrt. Du arbeitest mit Objekten und nicht mit JSON strings.
-
@mickym da habe ich aus Verzweiflung mal ausprobiert. Hier mit JSON nach Objekt:
-
@___manalishi Teile mit mir Deinen JSONATA Exerciser, dann probiere ich selbst. Ich vermute dass in dem result noch was unterschiedlich zum Exerciser ist.
-
@mickym https://try.jsonata.org/2Txs7duVq
hier mein Result:
Result: {'code': 0, 'msg': 'OK', 'data': {'rows': [{'symbol': '.BERAUSDTFR8H', 'fundingRate': '0.00003647', 'fundingTime': 1743264000000, 'intervalSeconds': 14400}]}}
-
@mickym sollte der debug Baustein mit JSON nach Objekt ein Ergenis ausgeben?
-
@___manalishi Nein aber der code darf auch nicht in ' stehen. Ggf. musst Du nichts konvertieren.
Wenn ich Dein Objekt aus dem JSONATA Exerciser ins Blockly übernehme dann funktioniert alles.
Hier zum Import:
Es muss also an Deinem result liegen, dass das KEIN Objekt ist, sondern entweder JSON String oder irgendwie kein Objekt da rauskommt.
Ansonsten siehst Du, dass Dein Code auch im Blockly tut.
Vielleicht ist result schon ein Objekt oder Du musst wie gesagt falls das ein JSON String ist, diesen in ein Objekt wandeln. Irgendwas stimmt da nicht. Prinzipiell ist aber Dein Code richtig, wie Du siehst.
-
@___manalishi sagte in JSONATA Filter auf json array:
@mickym da habe ich aus Verzweiflung mal ausprobiert. Hier mit JSON nach Objekt:
Mach da mal das Result weg - also keine Kombination - da wird intern dann das Objekt in Text gewandelt. Also die grünen Teile weg.
-
@mickym Ich habe bevor ich zum Exerciser bin den Result
{'code': 0, 'msg': 'OK', 'data': {'rows': [{'symbol': '.BERAUSDTFR8H', 'fundingRate': '0.0000337', 'fundingTime': 1743278400000, 'intervalSeconds': 14400}]}}
mit https://jsonformatter.curiousconcept.com/# geprüft und dabei wohl umformatiert
Der "original" result zeigt einen syntax Fehler
hier mein abfragescript mit response.json
-
@mickym es sind die ' im result. mit " funktioniert. wtf. macht da jede api was anderes?
-
@___manalishi sagte in JSONATA Filter auf json array:
{'code': 0, 'msg': 'OK', 'data': {'rows': [{'symbol': '.BERAUSDTFR8H', 'fundingRate': '0.0000337', 'fundingTime': 1743278400000, 'intervalSeconds': 14400}]}}
Das Original zeigt deshalb einen Fehler - weil der Exerciser doppelte Gänsefüsschen braucht. Wenn Du in einem Editor die ' durch " ersetzt - dann gehts eigentlich
{"code": 0, "msg": "OK", "data": {"rows": [{"symbol": ".BERAUSDTFR8H", "fundingRate": "0.0000337", "fundingTime": 1743278400000, "intervalSeconds": 14400}]}}
Wenn Du mein Blockly nimmst dann siehst Du dass nach der Umwandlung in ein Objekt keine Gänsefüsschen um die Eigenschaften sind.
Das mit den einfachen ' liegt eher am Blockly oder an exec und Du letztlich eine Bildschirmausgabe interpretierst. Weil exec liefert Dir ja stdout zurück - das ist keine API.
-
@___manalishi Nein JSON darf eigentlich nur " geben. Kann aber mit Deinem exec zu tun haben. Dann ersetze einfach in Deinem result noch die ' durch ".
-
@___manalishi sagte in JSONATA Filter auf json array:
wtf. macht da jede api was anderes?
Wie gesagt exec ist keine API, sondern liefert Dir die Bildschirmausgabe stdout zurück. Also schau ob Du das gegen " ersetzen kannst.
Aber Du siehst man kommt den Dingen schon gemeinsam auf die Spur. Liegt jedenfalls nicht an Deinem JSONATA Code.