NEWS
[solved] Systeminfo-Adapter: Daten aus JSON extrahieren
-
Ich habe mit dem Systeminfo-Adapter erfolgreich aus einem großen JSON ein Element extrahiert.
Das habe ich nach der Beschreibung in https://www.npmjs.com/package/iobroker.systeminfo gemacht
[?(...)] Filter the elements of this item by ..., Example: list[?(@.user == 'pi')] would first select the property list (which is an array) and fileter then the list by selecting only these list items what have .userset to pi.
Der Filter lautet damit bei mir nodes[?(@.name == 'gesuchterName')].
Ein solches Element hat nun die Struktur
{ "clients": 8, "firmware": "V3.14159265 / Jan2014", "hardware": "myHardware", "href": "https://", "id": "myid", "lastcontact": "2018-03-29T08:37:10+00:00", "loadavg": 0.14, "mac": "mac-adress", "name": "gesuchterName", "position": { "lat": 49.0, "lng": 10.0 }, "status": "alive", "uplink": { "fastd": 0, "l2tp": 0 }, "user": "somebody" },
Das Element besteht aus diversen Eigenschaften, von denen ich einige extrahieren möchte. Wie komme ich jetzt noch an diese Eigenschaften (z.B. lastcontact heran?
-
Einige Stunden des Probierens später habe ich eine Lösung dafür gefunden:
Den Filter kann man über die gewünschten Eigenschaft erweitern:
nodes[?(@.name == 'mynames')][name,lastcontact,status,loadavg]
Dann bekommt man aufsteigend nummerierte Variablen unter der Variable, die in der Spalte Name(s) angegeben ist.
Wenn man diese gerne mit einem sprechenden Namen versehen will, so kann man die Variablennamen noch anhängen
MeineVariable.[name,lastcontact,status,loadavg]