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 funktionieren
Gruß
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":)
-