NEWS
einen json String filtern und Bereiche löschen.
einen json String filtern und Bereiche löschen.
-
@stenmic sagte in einen json String filtern und Bereiche löschen.:
Nun möchte ich den "status" prüfen und überall wo "nok" (kann öffters vorkommen) steht, sollen die ganzen Blöcke aus dem String entfernt und dieser neu in einem anderen Datenpunkt gespeichert werden.
z.B.
const list = JSON.parse(getState('0_userdata.0.blabla1').val); const listOk = list.filter(r => r.status === 'ok'); setState('0_userdata.0.blabla2', JSON.stringify(listOk), true);Das vereinfach das Beispiel von @paul53 etwas:
// IDs eintragen! const idSrc = ''; const idDst = ''; function filter(json) { const arrSrc = JSON.parse(json); const arrDst = arrSrc.filter(r => r.status === 'ok'); setState(idDst, JSON.stringify(arrDst), true); } filter(getState(idSrc).val); on(idSrc, (dp) => filter(dp.state.val));@haus-automatisierung
cool,
ist das mit dem "filter" irgendwo beschrieben ? -
@haus-automatisierung
cool,
ist das mit dem "filter" irgendwo beschrieben ?@bahnuhr sagte in einen json String filtern und Bereiche löschen.:
ist das mit dem "filter" irgendwo beschrieben ?
Klar, ist ja Standard-JavaScript (in diesem Fall mit einer Arrow-Function):
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
-
@stenmic sagte in einen json String filtern und Bereiche löschen.:
Nun möchte ich den "status" prüfen und überall wo "nok" (kann öffters vorkommen) steht, sollen die ganzen Blöcke aus dem String entfernt und dieser neu in einem anderen Datenpunkt gespeichert werden.
z.B.
const list = JSON.parse(getState('0_userdata.0.blabla1').val); const listOk = list.filter(r => r.status === 'ok'); setState('0_userdata.0.blabla2', JSON.stringify(listOk), true);Das vereinfach das Beispiel von @paul53 etwas:
// IDs eintragen! const idSrc = ''; const idDst = ''; function filter(json) { const arrSrc = JSON.parse(json); const arrDst = arrSrc.filter(r => r.status === 'ok'); setState(idDst, JSON.stringify(arrDst), true); } filter(getState(idSrc).val); on(idSrc, (dp) => filter(dp.state.val));@haus-automatisierung
Kann in deinem Beispiel on triggern?weil idSrc ist ja ""
edit:
Frage ist Unsinn, denn es steht ja extra dabei ID eintragen.
Hatte ich überlesen.mfg
-
@haus-automatisierung
Kann in deinem Beispiel on triggern?weil idSrc ist ja ""
edit:
Frage ist Unsinn, denn es steht ja extra dabei ID eintragen.
Hatte ich überlesen.mfg
@bahnuhr Daher wohl der Kommentar darüber. Der TO hat die IDs seiner Darenpunkte nicht genannt
-
@bahnuhr Daher wohl der Kommentar darüber. Der TO hat die IDs seiner Darenpunkte nicht genannt
-
@stenmic sagte in einen json String filtern und Bereiche löschen.:
Nun möchte ich den "status" prüfen und überall wo "nok" (kann öffters vorkommen) steht, sollen die ganzen Blöcke aus dem String entfernt und dieser neu in einem anderen Datenpunkt gespeichert werden.
z.B.
const list = JSON.parse(getState('0_userdata.0.blabla1').val); const listOk = list.filter(r => r.status === 'ok'); setState('0_userdata.0.blabla2', JSON.stringify(listOk), true);Das vereinfach das Beispiel von @paul53 etwas:
// IDs eintragen! const idSrc = ''; const idDst = ''; function filter(json) { const arrSrc = JSON.parse(json); const arrDst = arrSrc.filter(r => r.status === 'ok'); setState(idDst, JSON.stringify(arrDst), true); } filter(getState(idSrc).val); on(idSrc, (dp) => filter(dp.state.val));bin gerade unterwegs und kann es noch nicht testen.
Ich muss nach nok suchen und diese Blöcke sollen gelöscht werden.
Eure Beispiele suchen nach ok und behalten diese.
„ok“ kann bei mir leider auch anderes heißen.
passt das dann so?const list = JSON.parse(getState('0_userdata.0.blabla1').val); const listOk = list.filter(r => r.status !== 'nok'); setState('0_userdata.0.blabla2', JSON.stringify(listOk), true); -
bin gerade unterwegs und kann es noch nicht testen.
Ich muss nach nok suchen und diese Blöcke sollen gelöscht werden.
Eure Beispiele suchen nach ok und behalten diese.
„ok“ kann bei mir leider auch anderes heißen.
passt das dann so?const list = JSON.parse(getState('0_userdata.0.blabla1').val); const listOk = list.filter(r => r.status !== 'nok'); setState('0_userdata.0.blabla2', JSON.stringify(listOk), true);@stenmic Ja
-
Wieder mal ein Beispiel, wie einfach das mit JSONATA ging, aber man sich lieber mit Schleifen und einer Menge Code das Leben schwer macht. man muss es halt nur anders formulieren und sagen, man will alle Objekte haben, die ok sind.
@mickym sagte in einen json String filtern und Bereiche löschen.:
Wieder mal ein Beispiel, wie einfach das mit JSONATA ging, aber man sich lieber mit Schleifen und einer Menge Code das Leben schwer macht. man muss es halt nur anders formulieren und sagen, man will alle Objekte haben, die ok sind.
@mickym also ich find jetzt den 3 Zeiler von @haus-automatisierung nicht schlimm.
(wenn man die JavaScript-docs im Schlaf aufzählen kann, ist alles voll einfach
) -
@mickym sagte in einen json String filtern und Bereiche löschen.:
Wieder mal ein Beispiel, wie einfach das mit JSONATA ging, aber man sich lieber mit Schleifen und einer Menge Code das Leben schwer macht. man muss es halt nur anders formulieren und sagen, man will alle Objekte haben, die ok sind.
@mickym also ich find jetzt den 3 Zeiler von @haus-automatisierung nicht schlimm.
(wenn man die JavaScript-docs im Schlaf aufzählen kann, ist alles voll einfach
)@stenmic Na anhand deines Beispiels nur der Vollständigkeit die JSONATA Lösung:
setState('0_userdata.0.Test.JSON_target',JSON.stringify(await jsonataExpression(JSON.parse(getState('0_userdata.0.Test.JSON_source').val),'$[status != "nok"]')), true);letztlich reduziert sich die ganze Logik auf diesen Ausdruck:
$[status != "nok"]Hier die Blockly-Version

-
@stenmic Na anhand deines Beispiels nur der Vollständigkeit die JSONATA Lösung:
setState('0_userdata.0.Test.JSON_target',JSON.stringify(await jsonataExpression(JSON.parse(getState('0_userdata.0.Test.JSON_source').val),'$[status != "nok"]')), true);letztlich reduziert sich die ganze Logik auf diesen Ausdruck:
$[status != "nok"]Hier die Blockly-Version

