Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Hilfe/Frage Parser Adapter

    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

    Hilfe/Frage Parser Adapter

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

      Hallo,

      ich habe ein Problem mit den Regex beim Parser. Mir ist unklar was der Unterschied zwischen String und JSON ist. Finde auch hierzu keine Beschreibung

      Ich habe folgenden Ausdruck
      > {"id":"AudioGetItem","jsonrpc":"2.0","result":{"item":{"albumid":129,"id":3174,"label":"Sakrileg 140","type":"song"}}}
      Hieraus benötige ich die 129 in dem Fall. albumid kann allerdings ja eine 1-4 stellige Zahl sein. (In meinem Fall. Grins)

      Benötige also eine Regex die nach "albumid": sucht und die Zahlen ausgibt bis ein komma kommt.

      Dachte hierfür eine lookaheadpattern assertion zu verwenden, was ich leider nicht hinbekomme, bzw der Parser macht es nicht mit.
      > (?="albumid":)[0-9]{1,}
      > (?=\"albumid\":)[0-9]{1,}

      Hoffe jemand hat Ahnung und kann mir sagen was ich als Regex verwende und ob String oder JSON

      Danke

      Gruß Zippolighter

      1 Reply Last reply Reply Quote 0
      • P
        pix last edited by

        Hallo,

        du kannst die JSON auch etwas übersichtlicher darstellen:

        {  
            "id":"AudioGetItem",
            "jsonrpc":"2.0",
            "result":{  
                "item":{  
                    "albumid":129,
                    "id":3174,
                    "label":"Sakrileg 140",
                    "type":"song"
                }
            }
        }
        

        So sieht man besser, welcher Pfad zu gewünschten Feld führt.

        Wenn du das mit dem javascript Adapter machst, geht das einfacher.

        /* JSON Daten auslesen
        
        http://forum.iobroker.net/viewtopic.php?f=20&t=8794
        erstellt: 01.11.2017
        */
        
        var jsondata = {  
            "id":"AudioGetItem",
            "jsonrpc":"2.0",
            "result":{  
                "item":{  
                    "albumid":129,
                    "id":3174,
                    "label":"Sakrileg 140",
                    "type":"song"
                }
            }
        };
        
        var ergebnis = jsondata.result.item.albumid;
        
        log(ergebnis);
        
        

        Gruß

        Pix

        Edit: Ich sehe ein, dass ich die Frage nicht beantwortet habe. Wo kommen die Daten her? Aus einem Datenpunkt eines Adapters?

        1 Reply Last reply Reply Quote 0
        • Z
          Zippolighter last edited by

          Hi Pix,

          danke für Deinen Vorschlag. Ist im Endeffekt sogar der optimalere Lösungsansatz da ich sowieso die Daten im javascript weiterverarbeite.

          Ich werde das gerne ausprobieren.

          Gruß Zippolighter

          Edit:

          Scheint das ich da irgendwas noch nicht verstanden habe.

          var jsondata1 = getState("parser.0.Lenovo_Kodi_All").val;
          

          log(jsondata1);
          > {"id":"AudioGetItem","jsonrpc":"2.0","result":{"item":{"albumid":129,"id":3176,"label":"Sakrileg 142","type":"song"}}}
          > var ergebnis = jsondata1.result.item.albumid;
          log(ergebnis);

          Bringt Fehler. Kann ich das so nicht machen??

          1 Reply Last reply Reply Quote 0
          • P
            pix last edited by

            Hallo,

            könnte sein, dass der Inhalt von jsondata1 kein Objekt, sondern ein String ist.

            Deshalb muss noch ein JSON.parse() dazwischen.

            var jsondata1_text = getState("parser.0.Lenovo_Kodi_All").val; // neue Stringvariable
            var jsondata1 = JSON.parse(jsondata1_text); // in Objekt umwandeln
            var ergebnis = jsondata1.result.item.albumid; // sollte dann funktionieren
            
            

            Gruß

            Pix

            1 Reply Last reply Reply Quote 0
            • A
              andyb last edited by

              Hallo Pix (gerne auch jemand anders),

              ich bräuchte bitte Hilfe 🙂

              mit dem Aufruf http://IP:5000/webapi/entry.cgi?api=SYNO.SurveillanceStation.HomeMode&version=1&method=GetInfo&_sid=XXX

              bekomme ich

              ! {"data":{"actrule_on":true,"actrules":"7,29,30","cameras":"","custom1_det":1,"custom1_di":0,"custom2_det":1,"custom2_di":1,"geo_delay_time":60,"geo_lat":99.4938980,"geo_lng":99.8202440,"geo_radius":100,"io_modules":"","mode_schedule":"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","mode_schedule_next_time":-1,"mode_schedule_on":false,"notify_event_list":[{"eventGroupType":2,"eventType":3,"filter":0},{"eventGroupType":2,"eventType":4,"filter":0},{"eventGroupType":2,"eventType":5,"filter":0},{"eventGroupType":2,"eventType":6,"filter":0},{"eventGroupType":2,"eventType":7,"filter":0},{"eventGroupType":2,"eventType":9,"filter":0},{"eventGroupType":2,"eventType":10,"filter":0},{"eventGroupType":2,"eventType":11,"filter":0},{"eventGroupType":2,"eventType":12,"filter":0},{"eventGroupType":2,"eventType":13,"filter":0},{"eventGroupType":2,"eventType":14,"filter":0},{"eventGroupType":4,"eventType":17,"filter":0},{"eventGroupType":4,"eventType":18,"filter":0},{"eventGroupType":5,"eventType":21,"filter":0},{"eventGroupType":5,"eventType":22,"filter":0},{"eventGroupType":5,"eventType":23,"filter":0},{"eventGroupType":5,"eventType":24,"filter":0},{"eventGroupType":5,"eventType":25,"filter":0},{"eventGroupType":5,"eventType":26,"filter":0},{"eventGroupType":1,"eventType":27,"filter":1},{"eventGroupType":1,"eventType":28,"filter":1},{"eventGroupType":1,"eventType":31,"filter":0},{"eventGroupType":1,"eventType":32,"filter":0},{"eventGroupType":1,"eventType":33,"filter":0},{"eventGroupType":7,"eventType":34,"filter":4},{"eventGroupType":7,"eventType":35,"filter":4},{"eventGroupType":7,"eventType":36,"filter":4},{"eventGroupType":7,"eventType":37,"filter":4},{"eventGroupType":7,"eventType":38,"filter":4},{"eventGroupType":7,"eventType":39,"filter":4},{"eventGroupType":7,"eventType":40,"filter":4},{"eventGroupType":7,"eventType":41,"filter":4},{"eventGroupType":7,"eventType":42,"filter":4},{"eventGroupType":7,"eventType":43,"filter":4},{"eventGroupType":1,"eventType":44,"filter":0},{"eventGroupType":6,"eventType":45,"filter":0},{"eventGroupType":6,"eventType":46,"filter":0},{"eventGroupType":6,"eventType":47,"filter":0},{"eventGroupType":6,"eventType":48,"filter":0},{"eventGroupType":6,"eventType":49,"filter":0},{"eventGroupType":6,"eventType":50,"filter":0},{"eventGroupType":6,"eventType":51,"filter":0},{"eventGroupType":6,"eventType":52,"filter":0},{"eventGroupType":4,"eventType":53,"filter":0},{"eventGroupType":4,"eventType":54,"filter":0},{"eventGroupType":3,"eventType":55,"filter":0},{"eventGroupType":3,"eventType":56,"filter":0},{"eventGroupType":3,"eventType":57,"filter":0},{"eventGroupType":2,"eventType":60,"filter":0},{"eventGroupType":2,"eventType":61,"filter":0},{"eventGroupType":2,"eventType":62,"filter":0},{"eventGroupType":2,"eventType":63,"filter":0},{"eventGroupType":2,"eventType":64,"filter":0},{"eventGroupType":2,"eventType":65,"filter":0},{"eventGroupType":8,"eventType":66,"filter":0},{"eventGroupType":8,"eventType":67,"filter":0},{"eventGroupType":8,"eventType":68,"filter":0},{"eventGroupType":8,"eventType":69,"filter":0},{"eventGroupType":8,"eventType":70,"filter":0},{"eventGroupType":8,"eventType":71,"filter":0},{"eventGroupType":9,"eventType":72,"filter":0},{"eventGroupType":9,"eventType":73,"filter":0},{"eventGroupType":9,"eventType":74,"filter":0},{"eventGroupType":9,"eventType":75,"filter":0},{"eventGroupType":9,"eventType":76,"filter":0},{"eventGroupType":9,"eventType":77,"filter":0},{"eventGroupType":9,"eventType":78,"filter":0}],"notify_on":true,"on":false,"reason":1,"rec_schedule":"222222222222000000000000000000000000000000002222222222222222000000000000000000000000000000002222222222222222000000000000000000000000000000002222222222222222000000000000000000000000000000002222222222222222000000000000000000000000000000002222222222222222000000000000000000000000000000002222222222222222000000000000000000000000000000002222","rec_schedule_on":false,"stream_profile":"0,0,0,0,1,1","streaming_on":false,"wifi_ssid":""},"success":true}
              als Antwort.

              Daraus bräuchte ich jetzt von "actrule_on":true das true oder false in einem Datenpunkte.

              Ich hab hat null Ahnung wie ich das hier umbauen müsste :oops:

              1 Reply Last reply Reply Quote 0
              • Z
                Zippolighter last edited by

                Versuche mal \w{1,5}(?=,"actrules":)

                1 Reply Last reply Reply Quote 0
                • Homoran
                  Homoran Global Moderator Administrators last edited by

                  Oder

                  "actrule_on":([a-z]*)
                  

                  hier hilft immer https://regex101.com/

                  Gruß

                  Rainer

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

                  Support us

                  ioBroker
                  Community Adapters
                  Donate
                  FAQ Cloud / IOT
                  HowTo: Node.js-Update
                  HowTo: Backup/Restore
                  Downloads
                  BLOG

                  877
                  Online

                  32.1k
                  Users

                  80.6k
                  Topics

                  1.3m
                  Posts

                  4
                  7
                  977
                  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