[dss-developer] (Weitere) Add-On Frage

Sergey 'Jin' Bostandzhyan jin at mediatomb.cc
Fri Nov 30 10:28:22 CET 2012


Hallo Lukas,

On Thu, Nov 29, 2012 at 12:38:49AM +0100, Lukas Zeller wrote:
> Da kämpfe ich mit dem Property-Tree, bzw. mit der Logik der JSON API Methode "query". Gibt's da genauere Doku als die eine Zeile in der JSON API dok? Ist das eine Syntax, die man kennen sollte, oder was dss-Eigenes?

es ist eine dSS eigene Syntax, detaillierte Doku gibt es nicht, wobei man
recht schnell dahinter kommt, wenn man ein paar Sachen ausprobiert.

Einige Beispiele finden sich im dSS UI, z.B.:
/json/property/query?query=/apartment/zones/*(ZoneID,scenes)/groups/*(group,name)/scenes/*(scene,name) 

Dies würde heissen: aus allen direkten child Nodes von "zones", gib mir die 
Werte von den leaf Nodes "ZoneID" und "scenes", falls dieser child Node
seinerseits einen child Node hat, der "groups" heisst, schau alle child Nodes
von "groups" an und gebe die leaf Nodes mit den namen "group" und "name" 
zurück, schau in doer Struktur weiter - gleiches Spiel mit "scenes".

* matched in diesem Fall alle child Nodes (in diesem speziellen Fall sind die
child Nodes von "zones" als "zoneXXX" durchnumeriert. Würdest du einen
bestimmten zone node anschauen wollen, könntest du z.B. 
/zones/zone123(ZoneID,scenes) verwenden, dies würde danne nur den "zone123" node
Betrachten und nur dort nach "ZoneID", "scenes" und in weiterer folge "groups"
suchen.

Ich weiss leider nicht wie ich das weniger verwirrend beschreiben kann,
aber wenn du ein paar Queries im Browser ausprobierst, und daneben den
Property Tree anschaust, wirst du recht schnell draufkommen wie das System
funktioniert.

> Mir scheint, dass der Aufbau des Trees bestimmten Konventionen folgen muss, damit das sinnvoll funktioniert. Ist das so?

Prinzipiell ja, z.B. wenn du /zones/zone123, /zones/zone456 hast,
dann sollte als child Node von zone123 noch ein node "name": "zone123" und
als child Node von zone456 ein Node "name": "zone456" vorhanden sein.
Ansonsten würdest du bei dem JSON, welches von der Query zurück kommt, nicht
sehen können zu welchem Node die daten gehören.

Probiere das Beispiel von weiter oben aus, und lasse das "name" weg, dann wirst
du sehen was ich meine - die Daten könnte man dann nicht mehr genau einer
bestimmten Zone zuordnen.

Grüsse,
Sergey



More information about the dss-developer mailing list