KNX Data Secure Unterstützung
für KNX Logger und KNX Busmonitor

KNX Diagnose Monitor, Import des ETS Projektes deutlich beschleunigt, Suche in der Navigation
Mehr Informationen dazu hier im Forum

Insider Version 6 zur 4.5 jetzt für alle Mitglieder des Insider Clubs installierbar
Alle Infos zum Update im Timberwolf Wiki

[Beantwortet] [V4.5 IP5] Welcher Selektor für ein verschachteltes JSON Element?

Wissen, Planung & Diskussion zur Unterstützung von Rest-API & Webabfragen im Timberwolf Server.
Stellt uns hier Eure Projekte und Ideen vor.
Forumsregeln
  • Denke bitte an aussagekräftige Titel und gebe dort auch die [Firmware] an. Wenn ETS oder CometVisu beteiligt sind, dann auch deren Version
  • Bitte mache vollständige Angaben zu Deinem Server, dessen ID und dem Online-Status in Deiner Signatur. Hilfreich ist oft auch die Beschreibung der angeschlossener Hardware sowie die verwendeten Protokolle
  • Beschreibe Dein Projekt und Dein Problem bitte vollständig. Achte bitte darauf, dass auf Screenshots die Statusleiste sichtbar ist
  • Bitte sei stets freundlich und wohlwollend, bleibe beim Thema und unterschreibe mit deinem Vornamen. Bitte lese alle Regeln, die Du hier findest: https://wiki.timberwolf.io/Forenregeln
Antworten

Ersteller
Doscre
Reactions:
Beiträge: 5
Registriert: Mi Dez 23, 2020 5:12 pm
Danksagung erhalten: 6 Mal

[V4.5 IP5] Welcher Selektor für ein verschachteltes JSON Element?

#1

Beitrag von Doscre »

Hi zusammen,

ich habe folgende Struktur als JSON und würde gerne darin das verschachtele Element Measurement Value aufrufen. Wie sieht dazu der Pfad (Selektor) aus, er schmeißt immer einen invalid path.

result.robotTasks.items[3].capturedLists.Pool Measurements[0].Measurement Value geht nicht.

Code: Alles auswählen

{
    "result": {
        "robotTasks": {
            "totalCount": 1,
            "pageNumber": 1,
            "hasMore": false,
            "items": [
                {
                    "id": "0",
                    "capturedLists": {
                        "Pool Measurements": [
                            {
                                "_STATUS": "CHANGED",
                                "Position": "1",
                                "Measurement Type": "pH [pH]",
                                "Measurement Value": "7.2"
                            }
                        ]
                    }
                }
            ]
        }
    }
}
Danke.

VG
Zuletzt geändert von StefanW am Mo Mai 05, 2025 3:38 pm, insgesamt 1-mal geändert.
TWS 2500 ID:465 (VPN offen, Reboot nach Rücksprache)

gbglace
Reactions:
Beiträge: 4088
Registriert: So Aug 12, 2018 10:20 am
Hat sich bedankt: 1415 Mal
Danksagung erhalten: 1901 Mal

#2

Beitrag von gbglace »

Naja da Du in dem JSON nur ein Item hast in dem Array, sollte das dann items[0] sein halt das erste.

Wenn es MQTT ist. Ich schaue mir bei MQTT sowas gern im MQTT Explorer an und da kann man sich dann auch den Pfad der einzelnen Elemente angeben lassen.
Zuletzt geändert von gbglace am Mo Mai 05, 2025 1:20 pm, insgesamt 1-mal geändert.
Grüße Göran
#1 Timberwolf 2600 Velvet Red TWS #225 / VPN aktiv / Reboot OK
#2 Timberwolf 2600 Organic Silver TWS #438 / VPN aktiv / Reboot OK
#PV 43,2 kWh Akku; 3x VE MP2 5000; 6,7 kWp > 18 Panele an 4x HM1500 + 1 HM800 WR; Open-DTU

Marino
Reactions:
Beiträge: 519
Registriert: Fr Jul 24, 2020 6:44 am
Wohnort: Hamburg
Hat sich bedankt: 202 Mal
Danksagung erhalten: 192 Mal

#3

Beitrag von Marino »

Warum hast Du items[3]? In Deinem Code gibt es das nicht.

Das müsste dann schon eher an items[0] abgefragt werden.

Code: Alles auswählen

result.robotTasks.items[0].capturedLists.Pool Measurements.[0].Measurement Value
Ich glaube aber, die Leerzeichen sind schwerwiegender.

Statt Pool Measurement müsstest Du wohl mal probieren, wie das Leerzeichen mit erkannt wird.
["Pool Measurements"]
'Pool Measurements'
"Pool Measurements"
z.B.

Welche Syntax genau gebraucht wird, kann ich leider nicht sagen.

PS: Bitte ergänze Deine Signatur entsprechend Forenregeln (blauer Kasten oben)
Zuletzt geändert von Marino am Mo Mai 05, 2025 1:25 pm, insgesamt 1-mal geändert.
Viele Grüße
Nils


TWS 3500XL ID:1080 (VPN offen, Reboot nach Rücksprache)
Benutzeravatar

micha79
Reactions:
Beiträge: 16
Registriert: Di Jul 30, 2024 7:42 pm
Hat sich bedankt: 20 Mal
Danksagung erhalten: 6 Mal

#4

Beitrag von micha79 »

Ich nutze dafür gerne den JSON Path Finder: https://jsonpathfinder.com

Demnach wäre es, wie Marino schon schreibt,

Code: Alles auswählen

x.result.robotTasks.items[0].capturedLists["Pool Measurements"][0]["Measurement Value"]
In der TWS-Umgebung entfällt das "x." zu Beginn normalerweise.

Viele Grüße
Micha
TWS 3500XL, ID 1583, Support-VPN und Reboot nach Absprache

Ersteller
Doscre
Reactions:
Beiträge: 5
Registriert: Mi Dez 23, 2020 5:12 pm
Danksagung erhalten: 6 Mal

#5

Beitrag von Doscre »

Hi, Danke für die schnellen Antworten.

Ich habe jetzt verschiedenste Varianten durch. Bis zur capturedLists Ebene funktioniert es. Die Ebenen darunter können irgendwie nicht adressiert werden. Any Ideas woran das noch liegen könnte?

result.robotTasks.items[0].capturedLists[Pool Measurements][0]."Measurement Value"
result.robotTasks.items[0].capturedLists[Pool Measurements][0].Measurement Value
result.robotTasks.items[0].capturedLists[Pool Measurements][0].[Measurement Value]

result.robotTasks.items[0].capturedLists["Pool Measurements“][0].“Measurement Value"
result.robotTasks.items[0].capturedLists["Pool Measurements“][0].Measurement Value
result.robotTasks.items[0].capturedLists["Pool Measurements“][0].[Measurement Value]

result.robotTasks.items[0].capturedLists["Pool Measurements"][0]["Measurement Value"]
result.robotTasks.items[0].capturedLists["Pool Measurements"][0][Measurement Value]
result.robotTasks.items[0].capturedLists["Pool Measurements"][0]Measurement Value

result.robotTasks.items[0].capturedLists['Pool Measurements'][0].“Measurement Value"
result.robotTasks.items[0].capturedLists['Pool Measurements'][0].Measurement Value
result.robotTasks.items[0].capturedLists['Pool Measurements'][0].[Measurement Value]

result.robotTasks.items[0].capturedLists['Pool Measurements'][0]“Measurement Value"
result.robotTasks.items[0].capturedLists['Pool Measurements'][0][Measurement Value]
result.robotTasks.items[0].capturedLists['Pool Measurements'][0]Measurement Value

VG
TWS 2500 ID:465 (VPN offen, Reboot nach Rücksprache)
Benutzeravatar

micha79
Reactions:
Beiträge: 16
Registriert: Di Jul 30, 2024 7:42 pm
Hat sich bedankt: 20 Mal
Danksagung erhalten: 6 Mal

#6

Beitrag von micha79 »

Schau mal hier in der Doku: https://elabnet.atlassian.net/wiki/spac ... I+REST-API

Mit ein bisschen Rumprobieren hat es meist schnell geklappt.

Viel Erfolg!
TWS 3500XL, ID 1583, Support-VPN und Reboot nach Absprache

Ersteller
Doscre
Reactions:
Beiträge: 5
Registriert: Mi Dez 23, 2020 5:12 pm
Danksagung erhalten: 6 Mal

#7

Beitrag von Doscre »

Hi zusammen,

Thread kann geschlossen werden.

Leerzeichnen müssen in "" excaped werden und man muss darauf achten, Arrays in Klammern und Objekte mit Punkte zu verarbeiten.

Danke an alle für den Support.

VG
TWS 2500 ID:465 (VPN offen, Reboot nach Rücksprache)

Sun1453
Reactions:
Beiträge: 2216
Registriert: Do Feb 07, 2019 8:08 am
Hat sich bedankt: 1978 Mal
Danksagung erhalten: 885 Mal

#8

Beitrag von Sun1453 »

@Doscre Kannst Du bitte für die anderen Nutzer noch die korrekten Selektoren posten. Danke Dir.
Gruß Michael

Timberwolf 950 QL #344 | Mit Internetanbindung | VPN Offen | Reboot nach Absprache | PROD Server
Timberwolf 2500 #602 | VPN offen | TEST Server | Reboot nach Absprache |

Ersteller
Doscre
Reactions:
Beiträge: 5
Registriert: Mi Dez 23, 2020 5:12 pm
Danksagung erhalten: 6 Mal

#9

Beitrag von Doscre »

Hi,

ergänzend noch die Selektoren:

result.robotTasks.items[0].capturedLists."Pool Measurements"[0]."Measurement Value"

Objekte mit . getrennt, Arrays mit [] Sonderzeichen in ""

Abfrage Bayrol Automatic CL über Browse AI.

VG
Zuletzt geändert von Doscre am Do Mai 08, 2025 10:08 am, insgesamt 1-mal geändert.
TWS 2500 ID:465 (VPN offen, Reboot nach Rücksprache)

SchateMuhl
Reactions:
Beiträge: 472
Registriert: Mi Nov 23, 2022 9:31 pm
Wohnort: Werther bei Nordhausen
Hat sich bedankt: 128 Mal
Danksagung erhalten: 185 Mal
Kontaktdaten:

#10

Beitrag von SchateMuhl »

@Doscre Hi, Ich lese gerade das du die Bayrol Automatic CL ausliest, kannst du mir schreiben wie du das machst, es gibt dich keine API dafür oder ?
Grüße
Andreas

TWS 3500M ID:992 /XL ID:1198 , VPN offen, Reboot nach Absprache
- KNX mit TWS, 1Home, ENO Gateway, ETS6.3
- PV Anlagen AC gekoppelt mit Fronius IG 40/60 und Symo 10KW
- 96kWh LiFePo mit 3 x MultiPlus 48/8000 und DC PV Anlagen über MPPT
Antworten

Zurück zu „HTTP-API, REST & Web-Abfragen“