NEWS
Hilfe/Frage Parser Adapter
-
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
-
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?
-
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??
-
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 funktionierenGruß
Pix
-
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:
-
Versuche mal \w{1,5}(?=,"actrules":)
-
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden