Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. Inventwo Jason Table einstellen?

    NEWS

    • Neues Video "KI im Smart Home" - ioBroker plus n8n

    • Neues Video über Aliase, virtuelle Geräte und Kategorien

    • Wir empfehlen: Node.js 22.x

    Inventwo Jason Table einstellen?

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

      Moin, ich bin absolut neu beim Thema JSON und Javascript. Hab es aber jetzt tatsächlich geschafft mir über ein http request auf eine API zuzugreifen und mir die Tabelle in einen Datenpunkt zu schreiben.

      Und jetzt steh ich wieder da und hab ein neues Problem:

      Der Inhalt des Datenpunkte (Beispiel):

      {
        "total_count": 0,
        "pagination": {
          "current_page": 0,
          "per_page": 0,
          "total_pages": 0
        },
        "list": [
          {
            "id": "string",
            "name": "string",
            "time": "string",
            "size": {
              "number": 0,
              "unit": "string"
            },
            "info": {
              "type": "string",
              "id": "string",
              "title": "string",
              "uris": [
                "string"
              ]
            },
            "comments": 0,
            "flags": {
              "english": true,
            }
          },
        ]
      }
      
      

      Normalerweise stehen in dem Array "list" mehrre Elemente, hier jetzt nur eins als Beispiel für den Aufbau.

      Nun möchte ich mir gernne alle Elemente untereianander in der VIS in einer JSON Table anzeigen lassen, aber nur 3 Spalten mit den Werten aus id(10), time(12) und type(18).

      Ich habe in Klammern die Zeile aus dem Code oben dazu geschrieben, da ich nicht weiß wie ich verschachtelte Eigenschaften richtig deklarieren muss.

      Ich hoffe ihr könnt mir folgen? 😵

      LG
      Dicken

      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @Dicken last edited by paul53

        @dicken sagte: nur 3 Spalten mit den Werten aus id(10), time(12) und type(18).

        Vorschlag für Javascript-Adapter:

        const idJSON = '...'; 
        const idTab = '0_userdata.0...';
        
        on(idJSON, function(dp) {
            const table = [];
            const list = JSON.parse(dp.state.val).list;
            for(const obj of list) {
                const objTable = {
                    id: obj.id,
                    time: obj.time,
                    type: obj.info.type
                };
                table.push(objTable);
            }
            setState(idTab, JSON.stringify(table), true);
        });
        
        1 Reply Last reply Reply Quote 1
        • Dicken
          Dicken last edited by

          @paul53 Da tut sich leider garnichts, hab bei idJSON den Datenpunkt in dem der JSON Code steht reingeschrieben und bei idTab einen von mir vorher neu erstellen leeren.

          War das so richtig? 😄

          paul53 1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @Dicken last edited by

            @dicken sagte: War das so richtig?

            Ja.

            @dicken sagte in Inventwo Jason Table einstellen?:

            Da tut sich leider garnichts

            Hat sich der Inhalt des JSON-DP schon mal geändert, denn nur dann wird getriggert.

            Dicken 1 Reply Last reply Reply Quote 1
            • Dicken
              Dicken @paul53 last edited by

              @paul53 Boah Meeegaaa 🙂 Vielen Dank, das hat funktioniert. Und da hab ich jetzt Stundenlang dran rumprobiert...

              Will nich unverschämt sein, aber eine kleine Frage hätt ich noch 🙂

              Beispiel: type: obj.info.type gibt mir zbsp: imdb:tt12345678 raus. Da würde ich gerne das imdb: wegschneiden, dass nur tt12345678 in den neuen Datenpunkt geschrieben wird.

              Kannst du mir sagen wie das geht?

              LG
              Dicken

              paul53 1 Reply Last reply Reply Quote 0
              • paul53
                paul53 @Dicken last edited by paul53

                @dicken sagte: Da würde ich gerne das imdb: wegschneiden

                Wenn es immer "imdb:" ist:

                            type: obj.info.type.substring(5)
                
                Dicken 1 Reply Last reply Reply Quote 0
                • Dicken
                  Dicken @paul53 last edited by

                  @paul53 Danke, aber hat so leider nicht funtkioniert: Hab folgende Ausgabe in den Logs bekommen:

                  Error in callback: TypeError: obj.info.type.substring is not a function

                  Hab aber dann mal kurz gegoogelt und mit

                  type: obj.info.type.toString().substring(5) 
                  

                  funktioniert es komischerweise. Könntest du mir erklären warum? Weil obj.info.type ist ja laut dem Beispiel im ersten Beitrag ein string.

                  paul53 1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 @Dicken last edited by

                    @dicken sagte: Weil obj.info.type ist ja laut dem Beispiel im ersten Beitrag ein string.

                    So ist es. Ist es nun eine Objekt? Dann vermisse ich aber die geschweiften Klammern.

                    Dicken 1 Reply Last reply Reply Quote 0
                    • Dicken
                      Dicken @paul53 last edited by

                      @paul53 Naja, wenn ich das jetzt wüsste 😄 Hab grade angefangen mich mit JSON zu beschäftigen. Ich hab das Beispiel grade nochmal mit dem Inhalt meines Datenpunktes verglichen, die Klammern sind alle genauso gesetzt wie im Beispiel.

                      Ich weiß nicht ob es vllt noch wichtig zu wissen ist aber beide manuell erstellten Datenpunkte sind vom Typ "json".

                      paul53 1 Reply Last reply Reply Quote 0
                      • paul53
                        paul53 @Dicken last edited by paul53

                        @dicken sagte: wenn ich das jetzt wüsste

                        Füge mal eine Log-Ausgabe ein, um zu sehen, was es ist:

                            for(const obj of list) {
                                log(obj.info.type + ', type: ' + typeof obj.info.type);
                        
                        Dicken 1 Reply Last reply Reply Quote 0
                        • Dicken
                          Dicken @paul53 last edited by

                          @paul53 type: object steht da tatsächlich.
                          Ich hab das Beispiel jetzt mal in ein JSON Pathfinder geworfen: Vielleicht hilft das ja weiter um den Fehler zu finden mit der Klammer?

                          list[0].id
                          list[0].time
                          list[0].info.type
                          
                          paul53 1 Reply Last reply Reply Quote 0
                          • paul53
                            paul53 @Dicken last edited by

                            @dicken sagt: type: object steht da tatsächlich.

                            Dann noch das Objekt selbst loggen:

                                for(const obj of list) {
                                    log(obj.info.type);
                            
                            Dicken 1 Reply Last reply Reply Quote 0
                            • Dicken
                              Dicken @paul53 last edited by

                              @paul53 Hier eine Ausgabe: [ 'imdb:tt14305738' ]

                              paul53 1 Reply Last reply Reply Quote 0
                              • paul53
                                paul53 @Dicken last edited by

                                @dicken
                                Also ein Array mit einem Element. Dann:

                                            type: obj.info.type[0].substring(5)
                                
                                Dicken 1 Reply Last reply Reply Quote 0
                                • Dicken
                                  Dicken @paul53 last edited by Dicken

                                  @paul53 sagte in Inventwo Jason Table einstellen?:

                                  .type[0].substring(5)

                                  Perfekt 🙂 Dankeschön, jetzt versuch ich erstmal alleine weiter 🙂 Will ja auch was lernen 😄

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

                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate

                                  970
                                  Online

                                  32.1k
                                  Users

                                  80.7k
                                  Topics

                                  1.3m
                                  Posts

                                  2
                                  15
                                  649
                                  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