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" } -
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
-
@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?
-
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.valueimmer 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
-
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.valueimmer 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! -
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?
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden
