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:

    6778152b-092e-4e43-9aa3-af1bb2ec12da-grafik.png
    40d51dc4-8900-4f69-b6c0-bf24b9f5621a-grafik.png
    Begonnen habe ich, wie es überall zu finden ist, mit


    Fehler im log ist dann

    10: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


  • Developer

    @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:42

    Nachtrag: Noch der Log:


  • Developer

    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)


  • Developer

    @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 mit

    var adcap = bodyObj2.data.cameras[0].MDCap;
    

    Gruß, Martin


Log in to reply
 

Suggested Topics

2.2k
Online

32.4k
Users

39.0k
Topics

528.5k
Posts