- Home
- Deutsch
- Skripten / Logik
- Blockly
- [gelöst] Blockly JSON Eintrag ändern
[gelöst] Blockly JSON Eintrag ändern
-
Hallo zusammen.
Ich könnte mal eine Erleuchtung gebrauchen.Momentan kämpfe ich mit dem JSON Format und den neuen Blockly-Bausteinen herum.
Ziel ist es ein JSON (mit mehreren Objekten) einzulesen, Daten ändern und wieder speichern.
Nach etlichen Versuchen und Forenbeiträgen ist mir dies teilweise gelungen.
Bei einem, ich nenne es mal eindimensionalem JSON, funktioniert es.Hier mein funktionierendes Beispiel.
Noch ein Tipp für blutige JSON-Anfänger wie mich. Ich benutze in dem Beispiel eine Zahl als „id“.
Deshalb reicht $[id=2] zur Auswahl. Wenn man Text auswählen möchte muss man Anführungszeichen setzen z.B. $[id=“Wohnzimmer“]. UND ganz wichtig auf Groß-, Kleinschreibung achten.Blockly Bild:
Das JSON dazu:[ { "id": 1, "Name": "Mustermann-1", "Strasse": "Musterstrasse-1" }, { "id": 2, "Name": "Mustermann-2", "Strasse": "Musterstrasse-2" }, { "id": 3, "Name": "Mustermann-3", "Strasse": "Musterstrasse-3" }, { "id": 4, "Name": "Mustermann-4", "Strasse": "Musterstrasse-4" } ]
Blockly Source:
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="0^qiE+P)i1~f?PZ(;N}a">JSONObjekt</variable> <variable id="1i*5:Ai4Ett,)dK]J`Ms">Test</variable> </variables> <block type="comment" id="EZvg/*|7xh=vW53L/Gy$" x="-662" y="-513"> <field name="COMMENT">JSON Original setzen</field> <next> <block type="variables_set" id="[cVDQy=1v{H-!^H/{!DG"> <field name="VAR" id="0^qiE+P)i1~f?PZ(;N}a">JSONObjekt</field> <value name="VALUE"> <block type="convert_json2object" id="!?x#HIB~ZuFM#W`#]z3C"> <value name="VALUE"> <block type="text" id="0Dia]flH6dkI65v*?aV1"> <field name="TEXT">[	{ 		"id": 1, 		"Name": "Mustermann-1", 		"Strasse": "Musterstrasse-1" 	}, 	{ 		"id": 2, 		"Name": "Mustermann-2", 		"Strasse": "Musterstrasse-2" 	}, 	{ 		"id": 3, 		"Name": "Mustermann-3", 		"Strasse": "Musterstrasse-3" 	}, 	{ 		"id": 4, 		"Name": "Mustermann-4", 		"Strasse": "Musterstrasse-4" 	} ]</field> </block> </value> </block> </value> <next> <block type="debug" id="G0PT1C@-+^^N/CHY+3W("> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="-?ue!/szD6[5B+iZgduV"> <field name="TEXT">***********************Original*************************</field> </shadow> </value> <next> <block type="debug" id="sVBBMnoP3WU;i^.vpkUK"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="$n;cwoQhxB-l:^aB[;3y"> <field name="TEXT">test</field> </shadow> <block type="variables_get" id="]yqvj=AwtGWNj4ceyf1."> <field name="VAR" id="0^qiE+P)i1~f?PZ(;N}a">JSONObjekt</field> </block> </value> <next> <block type="comment" id="#]blWwhzWtX]YPsfsrl0"> <field name="COMMENT">ID auswählen</field> <next> <block type="variables_set" id="!c$Jl5~[;116;39CA2Oq"> <field name="VAR" id="1i*5:Ai4Ett,)dK]J`Ms">Test</field> <value name="VALUE"> <block type="convert_jsonata" id="m/*`YBEKKh/G](?Hh!AW"> <value name="EXPRESSION"> <shadow type="text" id="i{Y-;:}vj7V.;rV+$qk."> <field name="TEXT">$[id=2]</field> </shadow> </value> <value name="TARGET"> <block type="variables_get" id="mY=yY6v4W1Y[:*qiw!v;"> <field name="VAR" id="0^qiE+P)i1~f?PZ(;N}a">JSONObjekt</field> </block> </value> </block> </value> <next> <block type="debug" id="w,!lv=}LxOQ4H(@yAVl0"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="wB:Dj2y/5)(9N6LV+TGY"> <field name="TEXT">*******************gewählte id aus Test*****************************</field> </shadow> </value> <next> <block type="debug" id="Uk6X0.rUW.}Zj0kW36Z+"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="]k,)C,tu|!#usM{872.w"> <field name="TEXT">test</field> </shadow> <block type="variables_get" id="t[J.%Q:E77|W,74a~{pQ"> <field name="VAR" id="1i*5:Ai4Ett,)dK]J`Ms">Test</field> </block> </value> <next> <block type="debug" id="(qT@FTLET6b10_JFi!~C"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="5qAyPX@`/[(=A04N_GAk"> <field name="TEXT">*****************Name aus id Test*******************************</field> </shadow> </value> <next> <block type="debug" id="n#k+N=m|7jlQ^.U`6TO."> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="@Waf()*5z4tgSz=~`9;q"> <field name="TEXT">test</field> </shadow> <block type="get_attr" id="JI~pU_gf*(#gv1/edYQ~"> <value name="PATH"> <shadow type="text" id="N+9`#Renf`-5*|m.e5Mb"> <field name="TEXT">Name</field> </shadow> </value> <value name="OBJECT"> <shadow type="get_object" id="he19iPE?;jvq_]^{$}D)"> <field name="OID">Object ID</field> </shadow> <block type="variables_get" id="`Tf|XMy3Xz4n%pvE]7D`"> <field name="VAR" id="1i*5:Ai4Ett,)dK]J`Ms">Test</field> </block> </value> </block> </value> <next> <block type="comment" id="[A:y1svo)[8okZ`xVd8F"> <field name="COMMENT">Name ändern</field> <next> <block type="object_set_attr" id="C9Jkydh,oHUv*[-N?|JU"> <field name="ATTR">Name</field> <value name="OBJECT"> <block type="variables_get" id="Rulq9N?,@SJ0!vE@%~@u"> <field name="VAR" id="1i*5:Ai4Ett,)dK]J`Ms">Test</field> </block> </value> <value name="VALUE"> <shadow type="text" id="cPKpK$N$0(RN3$XQ^+jR"> <field name="TEXT">##### Test ####</field> </shadow> </value> <next> <block type="debug" id="{3{b[R+@?$$^4-?/c10a"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="o8gS(jF)q:Lu,[z:mB6,"> <field name="TEXT">*****************geänderter Name aus id Test*******************************</field> </shadow> </value> <next> <block type="debug" id="(K-i7fej:dx3]x#lW4Uf"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="@Waf()*5z4tgSz=~`9;q"> <field name="TEXT">test</field> </shadow> <block type="get_attr" id="GCk[FrLUL^iC$GAjzB=+"> <value name="PATH"> <shadow type="text" id="F{ZBr#$iR*9eW{b%fDMk"> <field name="TEXT">Name</field> </shadow> </value> <value name="OBJECT"> <shadow type="get_object" id="he19iPE?;jvq_]^{$}D)"> <field name="OID">Object ID</field> </shadow> <block type="variables_get" id="N[t4(IlB;RU`5`_/XvCK"> <field name="VAR" id="1i*5:Ai4Ett,)dK]J`Ms">Test</field> </block> </value> </block> </value> <next> <block type="debug" id="u4CybUw/pq2L%N=4i5oE"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="likT5Md`DPV,p6-!r!E("> <field name="TEXT">***************geändertes JSON Original*********************************</field> </shadow> </value> <next> <block type="debug" id="L=J^~Fy(P]3=(*,3mco1"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="$n;cwoQhxB-l:^aB[;3y"> <field name="TEXT">test</field> </shadow> <block type="variables_get" id="Sp=iDIlnpU{u9{ThZ4M;"> <field name="VAR" id="0^qiE+P)i1~f?PZ(;N}a">JSONObjekt</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </xml>
Nun zu dem Beispiel das NICHT funktioniert.
Wobei ich nicht weiß ob es an mir liegt oder ein Bug im „Setze Attribut“ Baustein ist.Blockly Bild:
Das JSON dazu:
[ { "id": 1, "Name": { "Vorname": "Henri-1", "Nachname": "Mustermann-1" }, "Anschrift": { "Strasse": "Musterstrasse-1", "Ort:": "Musterort-1" } }, { "id": 2, "Name": { "Vorname": "Henri-2", "Nachname": "Mustermann-2" }, "Anschrift": { "Strasse": "Musterstrasse-2", "Ort:": "Musterort-2" } } ]
Blockly Source:
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="0^qiE+P)i1~f?PZ(;N}a">JSONObjekt</variable> <variable id="5^q]{Sfyr#dahNiN]R=@">Test</variable> </variables> <block type="comment" id="EZvg/*|7xh=vW53L/Gy$" x="-612" y="-462"> <field name="COMMENT">JSON Original setzen</field> <next> <block type="variables_set" id="[cVDQy=1v{H-!^H/{!DG"> <field name="VAR" id="0^qiE+P)i1~f?PZ(;N}a">JSONObjekt</field> <value name="VALUE"> <block type="convert_json2object" id="!?x#HIB~ZuFM#W`#]z3C"> <value name="VALUE"> <block type="text" id="0Dia]flH6dkI65v*?aV1"> <field name="TEXT">[ 	{ 		"id": 1, 		"Name": { 			"Vorname": "Henri-1", 			"Nachname": "Mustermann-1" 		}, 		"Anschrift": { 			"Strasse": "Musterstrasse-1", 			"Ort:": "Musterort-1" 		} 	}, 	{ 		"id": 2, 		"Name": { 			"Vorname": "Henri-2", 			"Nachname": "Mustermann-2" 		}, 		"Anschrift": { 			"Strasse": "Musterstrasse-2", 			"Ort:": "Musterort-2" 		} 	} ]</field> </block> </value> </block> </value> <next> <block type="debug" id="fkNpN*WtWl3Fb2%q8nEa"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="5V@1a4j+tNfTC^m`J8xd"> <field name="TEXT">*************Original***********************************</field> </shadow> </value> <next> <block type="debug" id="z1`|3d!r`x#;|_[hfk!s"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="*!}^.x?T/o7pW_u6@AJ."> <field name="TEXT">test</field> </shadow> <block type="variables_get" id="T%?wOC@q?lZP(;^3T2]i"> <field name="VAR" id="0^qiE+P)i1~f?PZ(;N}a">JSONObjekt</field> </block> </value> <next> <block type="comment" id="#]blWwhzWtX]YPsfsrl0"> <field name="COMMENT">ID auswählen</field> <next> <block type="variables_set" id="6Ac9kNIPsPtgZ8rup7!T"> <field name="VAR" id="5^q]{Sfyr#dahNiN]R=@">Test</field> <value name="VALUE"> <block type="convert_jsonata" id="fpXEZ=|fVK4[tNsaaO03"> <value name="EXPRESSION"> <shadow type="text" id="]D!S,2:xm^Q?r{A}9Bd="> <field name="TEXT">$[id=2]</field> </shadow> </value> <value name="TARGET"> <block type="variables_get" id="+fIp5lfA+nfc^mLzl4G$"> <field name="VAR" id="0^qiE+P)i1~f?PZ(;N}a">JSONObjekt</field> </block> </value> </block> </value> <next> <block type="debug" id="5+/GJ(P-|CMB#B1Z)mXq"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="YeyR.v8_|O3DLwmd6]=F"> <field name="TEXT">*************gewählte id aus Test***********************************</field> </shadow> </value> <next> <block type="debug" id="sVBBMnoP3WU;i^.vpkUK"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="jjF5++FKq9oUup##S3;i"> <field name="TEXT">test</field> </shadow> <block type="variables_get" id="]yqvj=AwtGWNj4ceyf1."> <field name="VAR" id="5^q]{Sfyr#dahNiN]R=@">Test</field> </block> </value> <next> <block type="debug" id="*,IKqGYVj_KvEF=+-S(@"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="RC`arNyLE9ok[SDiDSEE"> <field name="TEXT">*****************Nachname aus id Test****************************</field> </shadow> </value> <next> <block type="debug" id="L|BS,Me79{YBXCMc8iBi"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="jumUJ[i3TJAMVfVR+ATz"> <field name="TEXT">test</field> </shadow> <block type="get_attr" id="PrG6I%X6-N_$`STD$M~q"> <value name="PATH"> <shadow type="text" id="P$+/{k4Nn*[nsEg)HwCs"> <field name="TEXT">Name.Nachname</field> </shadow> </value> <value name="OBJECT"> <shadow type="get_object" id="lox}0weulq;I(P1ms1*u"> <field name="OID">Object ID</field> </shadow> <block type="variables_get" id="*rkDqOkD5O(59;2=v6-M"> <field name="VAR" id="5^q]{Sfyr#dahNiN]R=@">Test</field> </block> </value> </block> </value> <next> <block type="comment" id="pEFVc^J49;#t.tbk[#4:"> <field name="COMMENT">Nachname ändern</field> <next> <block type="object_set_attr" id=",dByN[roU:;u[3Qp`q5%"> <field name="ATTR">Name.Nachname</field> <value name="OBJECT"> <block type="variables_get" id="O%@zYESZw|{U[MBJiTOD"> <field name="VAR" id="5^q]{Sfyr#dahNiN]R=@">Test</field> </block> </value> <value name="VALUE"> <shadow type="text" id=":z2N;vi4f!oi340_l!A8"> <field name="TEXT">##### Test ####</field> </shadow> </value> <next> <block type="debug" id="Z:{CHk3GRUVm_h*{ZkaP"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="x7F#YLHp8Tk{b5[R5lH:"> <field name="TEXT">*******************Nachname wurde nicht geändert*****************************</field> </shadow> </value> <next> <block type="debug" id="s}]*DdIh]J+R=JDfLe~Q"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="jumUJ[i3TJAMVfVR+ATz"> <field name="TEXT">test</field> </shadow> <block type="get_attr" id="gTS*`0}7VQX+H[DJOMo$"> <value name="PATH"> <shadow type="text" id="`PV(~xtZXNCH?]jjXY4c"> <field name="TEXT">Name.Nachname</field> </shadow> </value> <value name="OBJECT"> <shadow type="get_object" id="lox}0weulq;I(P1ms1*u"> <field name="OID">Object ID</field> </shadow> <block type="variables_get" id="Pz0TBSL@g3n%SZ@}LfCA"> <field name="VAR" id="5^q]{Sfyr#dahNiN]R=@">Test</field> </block> </value> </block> </value> <next> <block type="debug" id="`)zO#6SgG?Cc/Qd:u_3S"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="!{3]D=i848TY!$VnWI(u"> <field name="TEXT">*******************geändertes JSON original*****************************</field> </shadow> </value> <next> <block type="debug" id="ylKTG,|U,#Kd}StRS2gi"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="H:E#9+yvj,jDC`,Sx[j4"> <field name="TEXT">test</field> </shadow> <block type="variables_get" id="^-zhPwZa/?(%stB^iD]J"> <field name="VAR" id="0^qiE+P)i1~f?PZ(;N}a">JSONObjekt</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </xml>
Das geänderte JSON sieht dann so aus.
[ { id: 1, Name: { Vorname: 'Henri-1', Nachname: 'Mustermann-1' }, Anschrift: { Strasse: 'Musterstrasse-1', 'Ort:': 'Musterort-1' } }, { id: 2, Name: { Vorname: 'Henri-2', Nachname: 'Mustermann-2' }, Anschrift: { Strasse: 'Musterstrasse-2', 'Ort:': 'Musterort-2' }, 'Name.Nachname': '##### Test ####' } ]
Anstatt den Nachnamen zu ändern wird die Änderung komplett, mit Attribut, an id 2 angehängt.Mache ich etwas falsch oder ist es ein Bug.
Bin für jeden Tipp dankbar!
Grüße
-
@rantanplan Ich kann auch keinen Fehler direkt entdecken - ich würde halt weiter JSONATA nehmen um das Attribut zu ändern. Wahrscheinlich kann das Puzzleteil nicht mit verschachtelten Objekten arbeiten.
-
@rantanplan sagte: Anstatt den Nachnamen zu ändern
-
$~>|Name|{"Nachname":"geänderter Nachname"}|
Hier wieder Dein Blockly zurück mit den Ergänzungen:
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="0^qiE+P)i1~f?PZ(;N}a">JSONObjekt</variable> <variable id="5^q]{Sfyr#dahNiN]R=@">Test</variable> </variables> <block type="comment" id="EZvg/*|7xh=vW53L/Gy$" x="-612" y="-462"> <field name="COMMENT">JSON Original setzen</field> <next> <block type="variables_set" id="[cVDQy=1v{H-!^H/{!DG"> <field name="VAR" id="0^qiE+P)i1~f?PZ(;N}a">JSONObjekt</field> <value name="VALUE"> <block type="convert_json2object" id="!?x#HIB~ZuFM#W`#]z3C"> <value name="VALUE"> <block type="text" id="0Dia]flH6dkI65v*?aV1"> <field name="TEXT">[ 	{ 		"id": 1, 		"Name": { 			"Vorname": "Henri-1", 			"Nachname": "Mustermann-1" 		}, 		"Anschrift": { 			"Strasse": "Musterstrasse-1", 			"Ort:": "Musterort-1" 		} 	}, 	{ 		"id": 2, 		"Name": { 			"Vorname": "Henri-2", 			"Nachname": "Mustermann-2" 		}, 		"Anschrift": { 			"Strasse": "Musterstrasse-2", 			"Ort:": "Musterort-2" 		} 	} ]</field> </block> </value> </block> </value> <next> <block type="debug" id="fkNpN*WtWl3Fb2%q8nEa"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="5V@1a4j+tNfTC^m`J8xd"> <field name="TEXT">*************Original***********************************</field> </shadow> </value> <next> <block type="debug" id="z1`|3d!r`x#;|_[hfk!s"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="*!}^.x?T/o7pW_u6@AJ."> <field name="TEXT">test</field> </shadow> <block type="variables_get" id="T%?wOC@q?lZP(;^3T2]i"> <field name="VAR" id="0^qiE+P)i1~f?PZ(;N}a">JSONObjekt</field> </block> </value> <next> <block type="comment" id="#]blWwhzWtX]YPsfsrl0"> <field name="COMMENT">ID auswählen</field> <next> <block type="variables_set" id="6Ac9kNIPsPtgZ8rup7!T"> <field name="VAR" id="5^q]{Sfyr#dahNiN]R=@">Test</field> <value name="VALUE"> <block type="convert_jsonata" id="fpXEZ=|fVK4[tNsaaO03"> <value name="EXPRESSION"> <shadow type="text" id="]D!S,2:xm^Q?r{A}9Bd="> <field name="TEXT">$[id=2]</field> </shadow> </value> <value name="TARGET"> <block type="variables_get" id="+fIp5lfA+nfc^mLzl4G$"> <field name="VAR" id="0^qiE+P)i1~f?PZ(;N}a">JSONObjekt</field> </block> </value> </block> </value> <next> <block type="debug" id="5+/GJ(P-|CMB#B1Z)mXq"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="YeyR.v8_|O3DLwmd6]=F"> <field name="TEXT">*************gewählte id aus Test***********************************</field> </shadow> </value> <next> <block type="debug" id="sVBBMnoP3WU;i^.vpkUK"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="jjF5++FKq9oUup##S3;i"> <field name="TEXT">test</field> </shadow> <block type="variables_get" id="]yqvj=AwtGWNj4ceyf1."> <field name="VAR" id="5^q]{Sfyr#dahNiN]R=@">Test</field> </block> </value> <next> <block type="debug" id="*,IKqGYVj_KvEF=+-S(@"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="RC`arNyLE9ok[SDiDSEE"> <field name="TEXT">*****************Nachname aus id Test****************************</field> </shadow> </value> <next> <block type="debug" id="L|BS,Me79{YBXCMc8iBi"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="jumUJ[i3TJAMVfVR+ATz"> <field name="TEXT">test</field> </shadow> <block type="get_attr" id="PrG6I%X6-N_$`STD$M~q"> <value name="PATH"> <shadow type="text" id="P$+/{k4Nn*[nsEg)HwCs"> <field name="TEXT">Name.Nachname</field> </shadow> </value> <value name="OBJECT"> <shadow type="get_object" id="lox}0weulq;I(P1ms1*u"> <field name="OID">Object ID</field> </shadow> <block type="variables_get" id="*rkDqOkD5O(59;2=v6-M"> <field name="VAR" id="5^q]{Sfyr#dahNiN]R=@">Test</field> </block> </value> </block> </value> <next> <block type="comment" id="pEFVc^J49;#t.tbk[#4:"> <field name="COMMENT">Nachname ändern</field> <next> <block type="object_set_attr" id=",dByN[roU:;u[3Qp`q5%"> <field name="ATTR">Name.Nachname</field> <value name="OBJECT"> <block type="variables_get" id="O%@zYESZw|{U[MBJiTOD"> <field name="VAR" id="5^q]{Sfyr#dahNiN]R=@">Test</field> </block> </value> <value name="VALUE"> <shadow type="text" id=":z2N;vi4f!oi340_l!A8"> <field name="TEXT">##### Test ####</field> </shadow> </value> <next> <block type="debug" id="Z:{CHk3GRUVm_h*{ZkaP"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="x7F#YLHp8Tk{b5[R5lH:"> <field name="TEXT">*******************Nachname wurde nicht geändert*****************************</field> </shadow> </value> <next> <block type="debug" id=":9h8z3rZ6G@MYI84|G4^"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="Tt=/H].l0?)mXb^z1#aR"> <field name="TEXT">test</field> </shadow> <block type="variables_get" id="L@eI]^w(~P2heMtyom:%"> <field name="VAR" id="5^q]{Sfyr#dahNiN]R=@">Test</field> </block> </value> <next> <block type="debug" id="s}]*DdIh]J+R=JDfLe~Q"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="jumUJ[i3TJAMVfVR+ATz"> <field name="TEXT">test</field> </shadow> <block type="get_attr" id="gTS*`0}7VQX+H[DJOMo$"> <value name="PATH"> <shadow type="text" id="`PV(~xtZXNCH?]jjXY4c"> <field name="TEXT">Name.Nachname</field> </shadow> </value> <value name="OBJECT"> <shadow type="get_object" id="lox}0weulq;I(P1ms1*u"> <field name="OID">Object ID</field> </shadow> <block type="variables_get" id="Pz0TBSL@g3n%SZ@}LfCA"> <field name="VAR" id="5^q]{Sfyr#dahNiN]R=@">Test</field> </block> </value> </block> </value> <next> <block type="comment" id=":*btLRvc{8pB{#1%hjeE"> <field name="COMMENT">Nachname mit JSONATA ändern</field> <next> <block type="debug" id="U#mO=guh;C;#/{#[+CM0"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="vMk1dK[^$`^)zM]?J1!}"> <field name="TEXT">*******************Nachname mit JSONATA geändert*****************************</field> </shadow> </value> <next> <block type="variables_set" id="iCICj=TiW1t)mf`?du[l"> <field name="VAR" id="5^q]{Sfyr#dahNiN]R=@">Test</field> <value name="VALUE"> <block type="convert_jsonata" id="D_!Oh~{ETp[_1v;k7tBL"> <value name="EXPRESSION"> <shadow type="text" id="IO6S?eapGp8pgqqZ]jgy"> <field name="TEXT">$~>|Name|{"Nachname":"geänderter Nachname"}|</field> </shadow> </value> <value name="TARGET"> <block type="variables_get" id="#[V:f(k2]`WH!xry~Thd"> <field name="VAR" id="5^q]{Sfyr#dahNiN]R=@">Test</field> </block> </value> </block> </value> <next> <block type="debug" id="7ez/t3!Ksm/#Fwx^4K+,"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="Tt=/H].l0?)mXb^z1#aR"> <field name="TEXT">test</field> </shadow> <block type="variables_get" id="2Em~$t#kNiO0IvVv_zbG"> <field name="VAR" id="5^q]{Sfyr#dahNiN]R=@">Test</field> </block> </value> <next> <block type="debug" id=")hCR3N0BhcFgdn[I:^9@"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="jumUJ[i3TJAMVfVR+ATz"> <field name="TEXT">test</field> </shadow> <block type="get_attr" id="tiNTn|{92(J$~MRW_f8Y"> <value name="PATH"> <shadow type="text" id="l[L;r_cZgED[(Z.zvGXu"> <field name="TEXT">Name.Nachname</field> </shadow> </value> <value name="OBJECT"> <shadow type="get_object" id="lox}0weulq;I(P1ms1*u"> <field name="OID">Object ID</field> </shadow> <block type="variables_get" id="wADRwpI4~opX4fZR#F-S"> <field name="VAR" id="5^q]{Sfyr#dahNiN]R=@">Test</field> </block> </value> </block> </value> <next> <block type="debug" id="`)zO#6SgG?Cc/Qd:u_3S"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="!{3]D=i848TY!$VnWI(u"> <field name="TEXT">*******************geändertes JSON original*****************************</field> </shadow> </value> <next> <block type="debug" id="ylKTG,|U,#Kd}StRS2gi"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="H:E#9+yvj,jDC`,Sx[j4"> <field name="TEXT">test</field> </shadow> <block type="variables_get" id="^-zhPwZa/?(%stB^iD]J"> <field name="VAR" id="0^qiE+P)i1~f?PZ(;N}a">JSONObjekt</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </xml>
Wie gesagt, wahrscheinlich kann das Puzzleteil nicht mit verschachtelten Objekten arbeiten.
Genau- wie @paul53 es sonst letztlich gemacht hat in dem er alles bis auf eine Ebene in ein Objekt gebracht hat. Also
name2:{ Vorname: 'Henri-2', Nachname: 'Mustermann-2' }
Wie gesagt, ich würde bei JSONATA bleiben, wenn Du es beherrschst - dann sparst Du Dir viel Code.
-
@mickym sagte: sparst Du Dir viel Code.
So viel Code ist es auch nicht, wenn man auf Zwischenvariablen verzichtet.
-
@paul53 OK - gebe ich Dir Recht. Allerdings kann man halt mit JSONATA auch das ganze Objekt belassen und die Stelle, die geändert werden muss genau spezifizieren:
$~>|$[id=2].Name|{"Nachname":"geänderter Nachname"}|
https://try.jsonata.org/p84fe2dLO
das finde ich (nur persönliche Meinung) schon genial.
-
@mickym sagt: das finde ich (nur persönliche Meinung) schon genial.
Das ist es, wenn man JSONATA beherrscht.
-
-
@rantanplan Nur der Vollständigkeit halber noch im Blockly mit JSONATA und Änderung des Nachnames der Person mit id=2 unter Beibehaltung des Gesamtobjektes (also Update):
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="0^qiE+P)i1~f?PZ(;N}a">JSONObjekt</variable> </variables> <block type="comment" id="EZvg/*|7xh=vW53L/Gy$" x="-612" y="-462"> <field name="COMMENT">JSON Original setzen</field> <next> <block type="variables_set" id="[cVDQy=1v{H-!^H/{!DG"> <field name="VAR" id="0^qiE+P)i1~f?PZ(;N}a">JSONObjekt</field> <value name="VALUE"> <block type="convert_json2object" id="!?x#HIB~ZuFM#W`#]z3C"> <value name="VALUE"> <block type="text" id="0Dia]flH6dkI65v*?aV1"> <field name="TEXT">[ 	{ 		"id": 1, 		"Name": { 			"Vorname": "Henri-1", 			"Nachname": "Mustermann-1" 		}, 		"Anschrift": { 			"Strasse": "Musterstrasse-1", 			"Ort:": "Musterort-1" 		} 	}, 	{ 		"id": 2, 		"Name": { 			"Vorname": "Henri-2", 			"Nachname": "Mustermann-2" 		}, 		"Anschrift": { 			"Strasse": "Musterstrasse-2", 			"Ort:": "Musterort-2" 		} 	} ]</field> </block> </value> </block> </value> <next> <block type="debug" id="fkNpN*WtWl3Fb2%q8nEa"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="5V@1a4j+tNfTC^m`J8xd"> <field name="TEXT">*************Original***********************************</field> </shadow> </value> <next> <block type="debug" id="z1`|3d!r`x#;|_[hfk!s"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="*!}^.x?T/o7pW_u6@AJ."> <field name="TEXT">test</field> </shadow> <block type="variables_get" id="T%?wOC@q?lZP(;^3T2]i"> <field name="VAR" id="0^qiE+P)i1~f?PZ(;N}a">JSONObjekt</field> </block> </value> <next> <block type="comment" id=":*btLRvc{8pB{#1%hjeE"> <field name="COMMENT">Nachname der ID2 mit JSONATA ändern</field> <next> <block type="debug" id="`)zO#6SgG?Cc/Qd:u_3S"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="!{3]D=i848TY!$VnWI(u"> <field name="TEXT">*******************geändertes JSON original*****************************</field> </shadow> </value> <next> <block type="debug" id="ylKTG,|U,#Kd}StRS2gi"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="H:E#9+yvj,jDC`,Sx[j4"> <field name="TEXT">test</field> </shadow> <block type="convert_jsonata" id="|m;@~qNAOjfn%MZ$G{qU"> <value name="EXPRESSION"> <shadow type="text" id="kR0Xg*|rHCzD{1`:$Dr~"> <field name="TEXT">$~>|$[id=2].Name|{"Nachname":"geänderter Nachname"}|</field> </shadow> </value> <value name="TARGET"> <block type="variables_get" id="^-zhPwZa/?(%stB^iD]J"> <field name="VAR" id="0^qiE+P)i1~f?PZ(;N}a">JSONObjekt</field> </block> </value> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </xml>
-
@paul53 sagte in Blockly JSON Eintrag ändern:
@mickym sagt: das finde ich (nur persönliche Meinung) schon genial.
Das ist es, wenn man JSONATA beherrscht.
Nochmals herzlichen Dank an @paul53 und @mickym
Ihr habt beide recht und beide Lösungen funktionieren.Der Nachteil bei dem "setze Attribut"-Baustein ist, dass er nicht flexibel ist.
Für jeden zu ändernden Wert müsste ein Baustein erstellt werden.Da ist die Lösung über JSONata besser.
Mal sehen wie ich mit der JSONata-Syntax zurecht komme wenn das JSON anders aussiehtIch habe mal mein Beispiel an JSONata angepasst und eine flexible Syntax angefügt.
Blockly Bild:
Blockly Source:
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="99K0cvb{Gks.j|c[IiQ;">index</variable> <variable id="$IaE?o__ePF.56a.Y?X|">key1</variable> <variable id="YjlvQ/k*Z8OUbOk.#l{T">key2</variable> <variable id="B9=_U-U9P.uOBg#U4_$H">value</variable> <variable id="0^qiE+P)i1~f?PZ(;N}a">JSONObjekt</variable> <variable id="Yph%-CD-C`M=KS6Ios_m">Syntax</variable> </variables> <block type="comment" id="EZvg/*|7xh=vW53L/Gy$" x="13" y="13"> <field name="COMMENT">JSON Original setzen</field> <next> <block type="variables_set" id="[cVDQy=1v{H-!^H/{!DG"> <field name="VAR" id="0^qiE+P)i1~f?PZ(;N}a">JSONObjekt</field> <value name="VALUE"> <block type="convert_json2object" id="!?x#HIB~ZuFM#W`#]z3C"> <value name="VALUE"> <block type="text" id="0Dia]flH6dkI65v*?aV1"> <field name="TEXT">[ 	{ 		"id": 1, 		"Name": { 			"Vorname": "Henri-1", 			"Nachname": "Mustermann-1" 		}, 		"Anschrift": { 			"Strasse": "Musterstrasse-1", 			"Ort:": "Musterort-1" 		} 	}, 	{ 		"id": 2, 		"Name": { 			"Vorname": "Henri-2", 			"Nachname": "Mustermann-2" 		}, 		"Anschrift": { 			"Strasse": "Musterstrasse-2", 			"Ort:": "Musterort-2" 		} 	} ]</field> </block> </value> </block> </value> <next> <block type="debug" id="fkNpN*WtWl3Fb2%q8nEa"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="5V@1a4j+tNfTC^m`J8xd"> <field name="TEXT">*************Original***********************************</field> </shadow> </value> <next> <block type="debug" id="z1`|3d!r`x#;|_[hfk!s"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="*!}^.x?T/o7pW_u6@AJ."> <field name="TEXT">test</field> </shadow> <block type="variables_get" id="T%?wOC@q?lZP(;^3T2]i"> <field name="VAR" id="0^qiE+P)i1~f?PZ(;N}a">JSONObjekt</field> </block> </value> <next> <block type="comment" id=":*btLRvc{8pB{#1%hjeE"> <field name="COMMENT">Nachname mit JSONATA ändern</field> <next> <block type="procedures_callnoreturn" id="W?h6GQb8y8t|U`S_ZpsD" inline="true"> <mutation name="changeJSON"> <arg name="index"></arg> <arg name="key1"></arg> <arg name="key2"></arg> <arg name="value"></arg> </mutation> <value name="ARG0"> <block type="text" id="Si)J7.l}1V#mRr!]BA#o"> <field name="TEXT">2</field> </block> </value> <value name="ARG1"> <block type="text" id="U7LW{`!EayJ=qkuqdsr3"> <field name="TEXT">Name</field> </block> </value> <value name="ARG2"> <block type="text" id="v}AzshZ.FGGUjUO~i}GT"> <field name="TEXT">"Nachname"</field> </block> </value> <value name="ARG3"> <block type="text" id="Z~,9aJa(A2+RWxwxW@z,"> <field name="TEXT">"###Test###"</field> </block> </value> <next> <block type="debug" id="`)zO#6SgG?Cc/Qd:u_3S"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="!{3]D=i848TY!$VnWI(u"> <field name="TEXT">*******************geändertes JSON original*****************************</field> </shadow> </value> <next> <block type="debug" id="ylKTG,|U,#Kd}StRS2gi"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="H:E#9+yvj,jDC`,Sx[j4"> <field name="TEXT">test</field> </shadow> <block type="variables_get" id="^-zhPwZa/?(%stB^iD]J"> <field name="VAR" id="0^qiE+P)i1~f?PZ(;N}a">JSONObjekt</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> <block type="procedures_defnoreturn" id="dC4pE/_O~yhMR!#AU/h8" x="13" y="363"> <mutation> <arg name="index" varid="99K0cvb{Gks.j|c[IiQ;"></arg> <arg name="key1" varid="$IaE?o__ePF.56a.Y?X|"></arg> <arg name="key2" varid="YjlvQ/k*Z8OUbOk.#l{T"></arg> <arg name="value" varid="B9=_U-U9P.uOBg#U4_$H"></arg> </mutation> <field name="NAME">changeJSON</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> <statement name="STACK"> <block type="comment" id="B$)+$S4|)j#H~Gv?x:Wn"> <field name="COMMENT">Beispiel</field> <next> <block type="comment" id="%o~P+rl.w-#8?T=kPP^X"> <field name="COMMENT">$~>|$[id=2].Name|{"Nachname":"######Test#####"}|</field> <next> <block type="variables_set" id="MbjAB,naua4}]T/T@A)("> <field name="VAR" id="Yph%-CD-C`M=KS6Ios_m">Syntax</field> <value name="VALUE"> <block type="text" id="llhG.fSWB-*)SQ9~,%f4"> <field name="TEXT">$~>|$[id=#111].#222|{#333:#444}|</field> </block> </value> <next> <block type="variables_set" id="V#k_?MR)*9.4)kkg])?9"> <field name="VAR" id="Yph%-CD-C`M=KS6Ios_m">Syntax</field> <value name="VALUE"> <block type="text_replace" id="Qu]P?%eG=mSkarMmzsp/"> <value name="FROM"> <shadow type="text" id="YS]$dgM(,hd)|i-)(B,T"> <field name="TEXT">#111</field> </shadow> </value> <value name="TO"> <shadow type="text" id="Q+p-ku?)8(T:}e$Fb(5."> <field name="TEXT">index</field> </shadow> <block type="variables_get" id="Hl_d!^-2$)2UD%B@%VuT"> <field name="VAR" id="99K0cvb{Gks.j|c[IiQ;">index</field> </block> </value> <value name="TEXT"> <shadow type="text" id=":ABh_%^sq%u|(W.b_==t"> <field name="TEXT">text</field> </shadow> <block type="variables_get" id="[QyBD;s}:2QEyj/aUs#V"> <field name="VAR" id="Yph%-CD-C`M=KS6Ios_m">Syntax</field> </block> </value> </block> </value> <next> <block type="variables_set" id="gs4HvnEd0+kH3!-riqzB"> <field name="VAR" id="Yph%-CD-C`M=KS6Ios_m">Syntax</field> <value name="VALUE"> <block type="text_replace" id=";#;V{Cblz9N,BO7;wcUx"> <value name="FROM"> <shadow type="text" id="6A4I%gH7]H^g9VgmZ$J["> <field name="TEXT">#222</field> </shadow> </value> <value name="TO"> <shadow type="text" id="Q+p-ku?)8(T:}e$Fb(5."> <field name="TEXT">index</field> </shadow> <block type="variables_get" id="_5BM;#EPz,{9Hd%`Dd$_"> <field name="VAR" id="$IaE?o__ePF.56a.Y?X|">key1</field> </block> </value> <value name="TEXT"> <shadow type="text" id=":ABh_%^sq%u|(W.b_==t"> <field name="TEXT">text</field> </shadow> <block type="variables_get" id="PeW_W~]uFPq]hz;cb^~-"> <field name="VAR" id="Yph%-CD-C`M=KS6Ios_m">Syntax</field> </block> </value> </block> </value> <next> <block type="variables_set" id="uQ4s=U/7g`k4:52#/l=|"> <field name="VAR" id="Yph%-CD-C`M=KS6Ios_m">Syntax</field> <value name="VALUE"> <block type="text_replace" id=",50,M^d~7K/6E/|pcmP!"> <value name="FROM"> <shadow type="text" id="r{X[!2cd[qJ=%,2lp}1A"> <field name="TEXT">#333</field> </shadow> </value> <value name="TO"> <shadow type="text" id="Q+p-ku?)8(T:}e$Fb(5."> <field name="TEXT">index</field> </shadow> <block type="variables_get" id="V])}+h=Hnzz,}%AjgV?j"> <field name="VAR" id="YjlvQ/k*Z8OUbOk.#l{T">key2</field> </block> </value> <value name="TEXT"> <shadow type="text" id=":ABh_%^sq%u|(W.b_==t"> <field name="TEXT">text</field> </shadow> <block type="variables_get" id="|UW`s=~i1YtPKFxaEI,j"> <field name="VAR" id="Yph%-CD-C`M=KS6Ios_m">Syntax</field> </block> </value> </block> </value> <next> <block type="variables_set" id="2Gz;2i4Rvs~*-*(;OGYr"> <field name="VAR" id="Yph%-CD-C`M=KS6Ios_m">Syntax</field> <value name="VALUE"> <block type="text_replace" id=":~[AmO.6vxdzgTl[u![?"> <value name="FROM"> <shadow type="text" id="k0%w+h)t],gRR1VM0Cr]"> <field name="TEXT">#444</field> </shadow> </value> <value name="TO"> <shadow type="text" id="Q+p-ku?)8(T:}e$Fb(5."> <field name="TEXT">index</field> </shadow> <block type="variables_get" id="YUs.rGU[mo+,(,pVN+V1"> <field name="VAR" id="B9=_U-U9P.uOBg#U4_$H">value</field> </block> </value> <value name="TEXT"> <shadow type="text" id=":ABh_%^sq%u|(W.b_==t"> <field name="TEXT">text</field> </shadow> <block type="variables_get" id="OdcgnLpGc2%^aT4P:!26"> <field name="VAR" id="Yph%-CD-C`M=KS6Ios_m">Syntax</field> </block> </value> </block> </value> <next> <block type="debug" id="^e98)DJx9J79=iRtv%M8"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="k~$WFVVT*Pw;dZFmNc-p"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="L..s?k(k3wJ8`S#Vw6fx"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="4e;uz`*(/evfVW6GLJlc"> <field name="TEXT">JSONata Ausdruck: </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="lLqD$M%b+vd;{`}+]vxg"> <field name="VAR" id="Yph%-CD-C`M=KS6Ios_m">Syntax</field> </block> </value> </block> </value> <next> <block type="variables_set" id="~f}lq-k+F|:R:,MB-;wp"> <field name="VAR" id="0^qiE+P)i1~f?PZ(;N}a">JSONObjekt</field> <value name="VALUE"> <block type="convert_jsonata" id="37iY9o7S08(prp)OPLYw"> <value name="EXPRESSION"> <shadow type="text" id="sfpB]{]]9i@u/D;NO.o@"> <field name="TEXT"></field> </shadow> <block type="variables_get" id=":lN+:a}}4~!6S;c#Y=8B"> <field name="VAR" id="Yph%-CD-C`M=KS6Ios_m">Syntax</field> </block> </value> <value name="TARGET"> <block type="variables_get" id="oPpxzCc[q2yEy*-Uey7x"> <field name="VAR" id="0^qiE+P)i1~f?PZ(;N}a">JSONObjekt</field> </block> </value> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </xml>
Damit werde ich mal weitere Versuche anstellen.
Nochmal vielen Dank!
Grüße
-
@rantanplan Na ja ich finde die JSONATA Syntax schon flexibel genug - ausserdem will man ja manchmal was anderes haben. Ich würde lieber mit dem JSONATA Exerciser üben und dann kannst Du diese Ausdrücke sofort hinschreiben und musst nicht erst eine Funktion aufrufen.
-
@mickym sagte in [gelöst] Blockly JSON Eintrag ändern:
@rantanplan Na ja ich finde die JSONATA Syntax schon flexibel genug - ausserdem will man ja manchmal was anderes haben.
Ja, deshalb eine flexible Abfrage.
Ich würde lieber mit dem JSONATA Exerciser üben
Das werde ich bestimmt tun.
und dann kannst Du diese Ausdrücke sofort hinschreiben und musst nicht erst eine Funktion aufrufen.
Aber dann hätte ich ja wieder eine starre Abfrage.
Erst einmal wollte ich die Möglichkeiten von JSON abklopfen und verstehen.
Jetzt überlege ich mir welche meiner Blocklys ich eventuell anpassen könnte.Eventuell probiere ich es bei meiner Heizungssteuerung.
Und da für jeden Raum, Zeiten, Temperaturen usw. feste Ausdrücke zu verwenden finde schier unmöglich.
Oder sehe ich da was falsch?Grüße
-
@rantanplan sagte in [gelöst] Blockly JSON Eintrag ändern:
Eventuell probiere ich es bei meiner Heizungssteuerung.
Und da für jeden Raum, Zeiten, Temperaturen usw. feste Ausdrücke zu verwenden finde schier unmöglich.
Oder sehe ich da was falsch?Na in meinen Augen siehst Du das falsch. Anstelle eine Funktion aufzurufen, kannst du doch den JSONATA Eintrag direkt erstellen. Du kannst den ja auch insgesamt als einen String abspeichern.
Ich seh hinter diesem Funktionsblock keinen Vorteil, ausser dass er Dir am Anfang eine Schablone gibt.Du kannst auch den ganzen Ausdruck in eine Variable setzen:
Wie gesagt, am Anfang hilft Dir das vielleicht - versuch halt lieber die Syntax zu verstehen:
https://docs.jsonata.org/other-operators#-------transformNehmen wir mal an, Du möchtest bei allen Namen noch die Anrede in das Objekt einfügen, dann stimmt doch der Ausdruck schon nicht mehr.
Letztlich lässt Du Dir zwar mit Deiner Funktion nur die Syntax zusammenstellen.
letztlich sind ja Deine Parameter index, key1, key2, value - auch fix - wenn Du diese Funktion aufrufst bzw. wenn Du Dir aus Datenpunkten holst. Aber egal- Du bekommst das schon hin.
Wenn Du Dir die Syntax anschaust, dann siehst Du ja an der Funktionsbeschreibung, die einzelnen Parameter:
head ~> | location | update [, delete] |
head
Mit "head" spezifierst Du das ganze Objekt - welches Du wie auch immer verändert wieder haben willst.
Schau mal das kennst Du ja bereits - als Transformation des gesamten Heads:
Wenn Du als "head" nun nur noch das einzelne Objekt wieder haben willst, mit der id 2 dann filterst Du bereits im head.
Jetzt bekommst Du also nur noch das Objekt zurück, was Du über den head bereits gefiltert hast.
$[id=2]~>|Name|{"Nachname":"geänderter Nachname"}|
Wenn Du im head schon bis zum Namensobjekt gefiltert hast, dann bekommst Du auch nur noch das Namensobjekt zurück. Dann ist der Pfad zum Objekt (location) natürlich das Objekt selbst.
$[id=2].Name~>|$|{"Nachname":"geänderter Nachname"}|
Probiers im Exerciser einfach aus.
location
Das ist der Pfad zu dem Objekt, dass Du modifzieren willst. Der Pfad richtet sich danach, wie der head ausschaut, also ob Du das ganze Ausgangsobjekt nimmst oder nur einen Teil.
update
Da schreibst Du in Objektschreibweise hin, welche Eigenschaft Du ändern willst. Existiert diese nicht wird sie hinzugefügt
======================================================================================
Wenn ich also so eine Funktion basteln würde, dann würde ich das mit diesen 3 Parametern machen .
-
@mickym sagte in [gelöst] Blockly JSON Eintrag ändern:
Na in meinen Augen siehst Du das falsch. Anstelle eine Funktion aufzurufen, kannst du doch den JSONATA Eintrag direkt erstellen.
Jetzt habe ich Dich verstanden. Aber die komplette Syntax zu bauen ist schon die Königsdisziplin.
Ich seh hinter diesem Funktionsblock keinen Vorteil, ausser dass er Dir am Anfang eine Schablone gibt.
Ja, eine Schablone ist aber schon mal ein Anfang. Und weniger Fehleranfällig.
Wie gesagt, am Anfang hilft Dir das vielleicht - versuch halt lieber die Syntax zu verstehen:
Ich werde es versuchen.
letztlich sind ja Deine Parameter index, key1, key2, value - auch fix - wenn Du diese Funktion aufrufst bzw. wenn Du Dir aus Datenpunkten holst.
Ja, aber einem Blockly/JSON angepasst.
Ich muss erstmal anfangen. Vielleicht kommt ja noch ein AHA-Effekt.Aber egal- Du bekommst das schon hin.
Überschätz mich nicht
-
@rantanplan sagte in [gelöst] Blockly JSON Eintrag ändern:
Überschätz mich nicht
Ich muss manchmal auch probieren - es wäre gelogen, wenn ich einfach sagen würde - dass es mir nur so aus den Fingern fließt. Deswegen liebe ich den Exerciser - da ich dann solange rumprobieren kann, bis es passt.
Wenn Du nur einen Parameter ändern willst, passt das ja - aber stell Dir mal vor, Du willst für die Person, Vor- und Nachname ändern?
Wie einfach das im Grunde geht.
$~>|$[id=2].Name|{"Vorname":"Max","Nachname":"Mustermann"}|
Und wie gesagt, scheu Dich halt nicht zu fragen. Für mich war das am Anfang auch schwer zu verstehen - heute bin ich sowas von begeistert. Ich glaube das merkt man auch.