Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JSON auslesen, Array

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    JSON auslesen, Array

    This topic has been deleted. Only users with topic management privileges can see it.
    • P
      PeterPan last edited by

      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:


      {"data":{"cameras":[{"ADCap":0,"AppList":[],"DINum":0,"DONum":0,"MDCap":4,"MDModeList":[0,1],"PDCap":0,"PDDepend":0,"TDCap":0,"advLiveMinDuration":10,"advLiveProfile":1,"advLiveTrigAuto":false,"advLiveTrigEvt":1,"advLiveTrigSingle":true,"analyticsType":0,"applicati

      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


      request(url_List, function(error, response, body) {
      var bodyObj = JSON.parse(body);
      var adcap = bodyObj.data.cameras[0].ADCap;
      console.log(adcap);
      });

      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

      Jey Cee 1 Reply Last reply Reply Quote 0
      • Jey Cee
        Jey Cee Developer @PeterPan last edited by

        @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;
        
        P 1 Reply Last reply Reply Quote 0
        • P
          PeterPan @Jey Cee last edited by PeterPan

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


          javascript.0 2020-01-05 11:43:15.535 error (727) at process._tickCallback (internal/process/next_tick.js:189:7)
          javascript.0 2020-01-05 11:43:15.535 error (727) at <anonymous>:null:null
          javascript.0 2020-01-05 11:43:15.534 error (727) at promise.then (/opt/iobroker/node_modules/standard-as-callback/built/index.js:19:49)
          javascript.0 2020-01-05 11:43:15.533 error (727) at tryCatcher (/opt/iobroker/node_modules/standard-as-callback/built/utils.js:11:23)
          javascript.0 2020-01-05 11:43:15.533 error (727) at client.get (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:491:17)
          javascript.0 2020-01-05 11:43:15.532 error (727) at adapter.getForeignState (/opt/iobroker/node_modules/iobroker.javascript/main.js:745:17)
          javascript.0 2020-01-05 11:43:15.532 error (727) at createProblemObject (/opt/iobroker/node_modules/iobroker.javascript/main.js:1123:17)
          javascript.0 2020-01-05 11:43:15.531 error (727) at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:1070:37)
          javascript.0 2020-01-05 11:43:15.530 error (727) at compile (/opt/iobroker/node_modules/iobroker.javascript/main.js:878:28)
          javascript.0 2020-01-05 11:43:15.530 error (727) at Object.createScript (vm.js:80:10)
          javascript.0 2020-01-05 11:43:15.529 error (727) SyntaxError: Unexpected number
          javascript.0 2020-01-05 11:43:15.528 error (727) ^^
          javascript.0 2020-01-05 11:43:15.528 error (727) var adcap = bodyObj.data.cameras.0.ADCap.val;
          javascript.0 2020-01-05 11:43:15.527 error at script.js.Test.Synology-API:42
          javascript.0 2020-01-05 11:43:15.527 error (727) script.js.Test.Synology-API compile failed:

          Jey Cee 1 Reply Last reply Reply Quote 0
          • Jey Cee
            Jey Cee Developer @PeterPan last edited by

            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.

            P 1 Reply Last reply Reply Quote 0
            • P
              PeterPan @Jey Cee last edited by

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

              Jey Cee 1 Reply Last reply Reply Quote 0
              • Jey Cee
                Jey Cee Developer @PeterPan last edited by

                @PeterPan das bedeutet aber das bodyObj.data keinen Inhalt hat.

                P 1 Reply Last reply Reply Quote 0
                • P
                  PeterPan @Jey Cee last edited by

                  @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

                  1 Reply Last reply Reply Quote 0
                  • First post
                    Last post

                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  652
                  Online

                  31.8k
                  Users

                  80.0k
                  Topics

                  1.3m
                  Posts

                  javascript
                  2
                  7
                  1185
                  Loading More Posts
                  • Oldest to Newest
                  • Newest to Oldest
                  • Most Votes
                  Reply
                  • Reply as topic
                  Log in to reply
                  Community
                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                  The ioBroker Community 2014-2023
                  logo