NEWS
Attribut-Abfrage mit Punkten dazwischen (gelöst)
-
Hallo miteinander,
ich wage mich gerade an erste Blockly-"Scripte" heran und versuche einen Testdatensatz eines Microcontroller-APIs zu lesen, der wiederum ein Smartmeter auslesen soll. Ausgelesen habe ich mit "Attribut vom Objekt"Nun habe ich gelesen, dass Punkte (".") im Attribut für verschachtelte JSONs verwendet werden, also zB für
"Body" : { "Data" : { "XYZ" : { "Value" : 1234}}}
gebe ich als Attribut "Body.Data.XYZ.Value" ein und bekomme 1234.
Jetzt habe ich in diesem Fall aber einen Datenpunkt der "1.8.0" heißt, ohne Verschachtelung. Gebe ich das in die Attribut-Abfrage ein, kommt "NULL".
z.B. "uptime" und der "timestamp" wird korrekt ausgegebenHier der Testdatensatz, der auszulesen wäre:
{ "timestamp":"2022-02-02T09:47:15", "1.8.0":"686655", "2.8.0":"67", "1.7.0":"143", "2.7.0":"0", "32.7.0":"2370", "52.7.0":"2375", "72.7.0":"2366", "31.7.0":"9", "51.7.0":"53", "71.7.0":"63", "13.7.0":"536", "uptime":"0007:00:03:04" }
-
@brokenchrisi sagte in Attribut-Abfrage mit Punkten dazwischen:
{
da musst du dir eine function schreiben
der inhalt wäre:
log(myJson["1.8.0"])
zum testen ein script
-
Vielen Dank! Damit klappt es wunderbar!!!
Für das Verständnis: Kannst du für mich als JS-Laien (deshalb verwende ich blockly) kurz erklären was diese Funktion macht?
-
normalerweise ist das mit dem punkt zum unterscheiden schon richtig - wenn aber z.b. punkte oder bindestiche im attribut sind, kann das javasccript nicht - der punkt ist reserviert und der bindestrich bedeutet minus
die funktion übesetzt das durch die geschweifte klammer - damit man das trotzdem lesen kann.
mal ein beispiel
"Body" : { "1.8.0" : { "XYZ" : { "value" : 1234}}}
dies muss so abgefragt werden
Body["1.8.0"].Data.XYZ.value
immer an der stelle, wo sonderzeichen sind muss dann anstatt eines punktes - ein eckige klammer bei der abfrage
die function macht folgendes
du übergibst ihr das thejson als parameter, in der function wird dann definiert, was sie mit dem parameter machen soll und mit return zurückgegeben
-
Danke dir! -