NEWS
FritzBox json
-
Hallo zusammen,
ich würde gerne aus einer bestehenden JSON-Tabelle nur bestimmte Werte extrahieren. Ich weiß das dies mit Java-Script
und der Funktion json parse funktioniert. Leider bekomme ich das aber nicht so hin wie ich es gerne hätte.
Der aktuelle Datenpunkt der Fritzbox liefert liefert folgende Werte:
[{"date":"07.10.18 18:00:02","externalNumber":"0155000000","callSymbolColor":"** ->>**","extensionLine":"10","ownNumber":"8209500","lineType":"SIP1","durationForm":" 44"},{"date":"07.10.18 17:58:29","externalNumber":"015000000","callSymbolColor":"** ->X**","extensionLine":"","ownNumber":"8209500","lineType":"SIP1","durationForm":" -"},{"date":"06.10.18 16:37:14","externalNumber":"025000","callSymbolColor":"** ->X**","extensionLine":"","ownNumber":"8209500","lineType":"SIP1","durationForm":" -"},{"date":"06.10.18 11:47:59","externalNumber":"0175000000","callSymbolColor":"** ->>**","extensionLine":"10","ownNumber":"8209500","lineType":"SIP1","durationForm":" 2:33"}]Ich hätte gerne davon gerne nur die Werte date, externalNumber, callSymbolColor, durationForm in jeweils eingene Datenpunkte.
Hoffe ihr könnte mir auf die Sprünge helfen.
Gruß
Damich
-
gerne nur die Werte date, externalNumber, callSymbolColor, durationForm in jeweils eingene Datenpunkte.
Diese Werte liegen 4 mal vor, denn es ist ein Array mit 4 gleichen Objekten, die unterschiedliche Werte enthalten.Okay, das hätte ich sehen müssen. Aber weiter geholfen ist mir damit nicht wirklich.
-
Die Frage ist, welche Werte Du in Datenpunkte schreiben möchtest: Alle 4 * 4 in 16 Datenpunkte oder nur die letzten Werte in 4 Datenpunkte. Beispiel für die letzten Werte (Datenpunkte von Typ "string" liegen unter javascript.0):
var obj = JSON.parse(json)[0]; // Objekt mit den letzten Werten setState('Fritzbox.Datum', obj.date, true); setState('Fritzbox.Rufnummer', obj.externalNumber, true); setState('Fritzbox.Symbol', obj.callSymbolColor, true); setState('Fritzbox.Dauer', obj.durationForm, true); -
am liebsten alle 16 Datenpunkte `
Das sollte etwa so funktionieren:`var arr = JSON.parse(json); var cnt = arr.length; if(cnt > 4) cnt = 4; for(let i = 0; i < cnt; i++) { var obj = arr[i]; setState('Fritzbox.' + i + '-Datum', obj.date, true); setState('Fritzbox.' + i + '-Rufnummer', obj.externalNumber, true); setState('Fritzbox.' + i + '-Symbol', obj.callSymbolColor, true); setState('Fritzbox.' + i + '-Dauer', obj.durationForm, true); }` Mit Vis kenne ich mich nicht aus.[/i] -
am liebsten alle 16 Datenpunkte `
Das sollte etwa so funktionieren:`var arr = JSON.parse(json); var cnt = arr.length; if(cnt > 4) cnt = 4; for(let i = 0; i < cnt; i++) { var obj = arr[i]; setState('Fritzbox.' + i + '-Datum', obj.date, true); setState('Fritzbox.' + i + '-Rufnummer', obj.externalNumber, true); setState('Fritzbox.' + i + '-Symbol', obj.callSymbolColor, true); setState('Fritzbox.' + i + '-Dauer', obj.durationForm, true); }` Mit Vis kenne ich mich nicht aus. Danke für deine Hilfe. Dann habe ich schon mal eine Lösung. Falls sich jemand noch zu VIS äußern könnte, wäre das perfekt. Gruß Damich[/i] ``` `
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