NEWS
JSON auslesen, Array
-
Hallo,
ich bekomme es einfach nicht hin, folgendes JSON (Abrage der Eigenschaften der Kameras der Synology SurveillanceStation) bspw. nach einem Eintrag des Parameters "MDModeList" oder nach dem Wert des Parameters "ADCap" abzufragen. Auszug aus den ersten Zeilen des JSON:
Zum besseren Verständnis noch ein paar Screenshots:
Begonnen habe ich, wie es überall zu finden ist, mit
Fehler im log ist dann10:50:37.708 error javascript.0 (727) script.js.Test.Synology-API: TypeError: Cannot read property 'cameras' of undefined
10:50:37.709 error javascript.0 (727) at Request._callback (script.js.Test.Synology-API:42:26)Könnte mir bitte jemand helfen?
Viele Grüße, Martin
-
@PeterPan sagte in JSON auslesen, Array:
var adcap = bodyObj.data.cameras[0]ADCap;
Du willst nicht das erste Element cameras sondern das Element 0 von cameras. Das in den Eckigen Klammern gibt immer an das wievielte Element mit dem Namen es ist.
Das muss so aussehen:var adcap = bodyObj.data.cameras.0.ADCap;
-
@Jey-Cee sagte in JSON auslesen, Array:
var adcap = bodyObj.data.cameras.0.ADCap;
Hallo Jey-Cee,
danke für die Erklärung! Leider hat
request(url_List, function(error, response, body) { var bodyObj = JSON.parse(body); var adcap = bodyObj.data.cameras.0.ADCap; console.log(adcap); });
kein Erfolg. Nun ist die Fehlermeldung:
11:45:06.288 error javascript.0 (727) script.js.Test.Synology-API compile failed: at script.js.Test.Synology-API:42Nachtrag: Noch der Log:
-
OK Zahlen mag er nicht, seltsam.
Versuch es mal so:var adcap = bodyObj.data.cameras['0'].ADCap;
So interpretiert er die 0 als String, was in einem JSON dem Key Name entspricht.
-
@Jey-Cee Leider auch nicht, jetzt kommt wieder:
12:13:36.265 error javascript.0 (727) script.js.Test.Synology-API: TypeError: Cannot read property 'cameras' of undefined
12:13:36.266 error javascript.0 (727) at Request._callback (script.js.Test.Synology-API:42:28) -
@PeterPan das bedeutet aber das bodyObj.data keinen Inhalt hat.
-
@Jey-Cee Hey, das war es dann wohl ... der Aufruf über Webbrowser funktionierte, was mich dazu verleiten ließ, anzunehmen, dass es auch per Skript läuft. Ich musste in meiner Abfrage noch die SID mitgeben bzw. mich vorher einloggen, da mir die Abfrage, ob Inhalt überhaupt kommt, mit der Errorcode "Insufficient user privilege" quittiert wurde.
Daher vielen Dank für den entscheidenen Hinweis und es läuft jetzt auch mitvar adcap = bodyObj2.data.cameras[0].MDCap;
Gruß, Martin