Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. JSON Replace

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    JSON Replace

    This topic has been deleted. Only users with topic management privileges can see it.
    • B
      BMP last edited by

      Hallo zusammen,

      ich stehe vor einem Problem, welches ich mit Blocky nicht gelöst bekomme.
      Ich habe ein Datenpunkt im JSON Format:

      'tibberlink.0.Homes.c85a655c-5f86-451d-9ea7-46c81c28d4aa.PricesToday.json'/json/

      [{"total":0.3018,"energy":0.098,"tax":0.2038,"startsAt":"2023-11-22T00:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.2982,"energy":0.095,"tax":0.2032,"startsAt":"2023-11-22T01:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.2982,"energy":0.095,"tax":0.2032,"startsAt":"2023-11-22T02:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.2946,"energy":0.092,"tax":0.2026,"startsAt":"2023-11-22T03:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.2952,"energy":0.0925,"tax":0.2027,"startsAt":"2023-11-22T04:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.298,"energy":0.0949,"tax":0.2031,"startsAt":"2023-11-22T05:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.3281,"energy":0.1202,"tax":0.2079,"startsAt":"2023-11-22T06:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.3526,"energy":0.1407,"tax":0.2119,"startsAt":"2023-11-22T07:00:00.000+01:00","currency":"EUR","level":"EXPENSIVE"},{"total":0.3656,"energy":0.1516,"tax":0.214,"startsAt":"2023-11-22T08:00:00.000+01:00","currency":"EUR","level":"EXPENSIVE"},{"total":0.3414,"energy":0.1313,"tax":0.2101,"startsAt":"2023-11-22T09:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.322,"energy":0.115,"tax":0.207,"startsAt":"2023-11-22T10:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.3085,"energy":0.1036,"tax":0.2049,"startsAt":"2023-11-22T11:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.299,"energy":0.0957,"tax":0.2033,"startsAt":"2023-11-22T12:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.307,"energy":0.1024,"tax":0.2046,"startsAt":"2023-11-22T13:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.3232,"energy":0.116,"tax":0.2072,"startsAt":"2023-11-22T14:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.3277,"energy":0.1198,"tax":0.2079,"startsAt":"2023-11-22T15:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.3363,"energy":0.127,"tax":0.2093,"startsAt":"2023-11-22T16:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.3433,"energy":0.1329,"tax":0.2104,"startsAt":"2023-11-22T17:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.3397,"energy":0.1299,"tax":0.2098,"startsAt":"2023-11-22T18:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.3265,"energy":0.1188,"tax":0.2077,"startsAt":"2023-11-22T19:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.3106,"energy":0.1054,"tax":0.2052,"startsAt":"2023-11-22T20:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.2918,"energy":0.0897,"tax":0.2021,"startsAt":"2023-11-22T21:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.2925,"energy":0.0902,"tax":0.2023,"startsAt":"2023-11-22T22:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.2741,"energy":0.0748,"tax":0.1993,"startsAt":"2023-11-22T23:00:00.000+01:00","currency":"EUR","level":"CHEAP"}]
      

      Den würde ich gerne manipulieren, dass dort nicht steht:
      "startsAt":"2023-11-22T23:00:00.000+01:00", sonder
      "startsAt":"23:00 Uhr",

      Leider habe ich mit JavaScript noch keine wirkliche erfahrung.
      Kann mir da einer bei helfen ?

      Gruß Marcus

      mickym 1 Reply Last reply Reply Quote 0
      • mickym
        mickym Most Active @BMP last edited by mickym

        Mach es mit JSONATA - dann ist es ganz einfach. war nutzt Du Blockly oder Javascript?

        Da schau mal:

        https://try.jsonata.org/dP--ad0wF

        B 1 Reply Last reply Reply Quote 1
        • B
          BMP @mickym last edited by

          @mickym bislang habe ich nur mit Blocky gearbeitet. Habe es da aber nicht hinbekommen (Search + Replace) und dachte darum an JavaScript.

          mickym 1 Reply Last reply Reply Quote 0
          • mickym
            mickym Most Active @BMP last edited by mickym

            @bmp Leider verstehe ich gerade nicht, warum es bei Blockly und JS nicht tut - im JSONATA Editor aber schon. Ich versuche es noch mal mit einer anderen Funktion

            B 1 Reply Last reply Reply Quote 0
            • B
              BMP @mickym last edited by

              @mickym wollte dich gerade fragen, ob ich einfach zu blöd bin 🙂

              0e5d6bc0-7199-481c-b2fe-dd18b4001380-grafik.png

              mickym 1 Reply Last reply Reply Quote 0
              • mickym
                mickym Most Active @BMP last edited by mickym

                @bmp Nein Du siehst ja dass es im JSONATA funktioniert - keine Ahnung warum es im Blockly nicht tut. OK - mit JSONATA gehts hier nicht - dabei wäre das so einfach - aber dann muss Dir wohl ein Mensch helfen.

                Ich habe es auch mit der Replace Funktion versucht - aber das tut auch nicht.

                https://try.jsonata.org/gY4gbHiOO

                $~>|$|{'startsAt': $replace(startsAt,/.*T(\d\d:\d\d).*/,"$1") & " Uhr"}|
                

                Sorry dann musst Du es wohl herkömmlich machen oder NodeRed nutzen. 😉

                Aber vielleicht hilft Dir ja noch jemand, der das besser als ich kann.

                B T 2 Replies Last reply Reply Quote 1
                • B
                  BMP @mickym last edited by

                  Aber vielleicht hilft Dir ja noch jemand, der das besser als ich kann.

                  Ich danke dir auf jeden Fall für deine Unterstützung.
                  Habe zumindest schon mal wieder eine neue Funktion gelernt und neue Ansätze gefunden.

                  1 Reply Last reply Reply Quote 0
                  • T
                    ticaki Developer @mickym last edited by ticaki

                    @mickym sagte in JSON Replace:

                    @bmp Nein Du siehst ja dass es im JSONATA funktioniert - keine Ahnung warum es im Blockly nicht tut

                    Im Datenpunkt stehen IMMER Strings, da funktioniert Jsonata nicht. 🙂

                    Bildschirmfoto 2023-11-22 um 19.36.54.png

                    mickym 1 Reply Last reply Reply Quote 0
                    • mickym
                      mickym Most Active @ticaki last edited by mickym

                      @mickym Ich habe den String ins Objekt gewandelt - hilft alles nichts - das tut nicht -warum auch immer. Mein JSONATA funktioniert jedenfalls - sieht man ja an den Links.

                      1 Reply Last reply Reply Quote 1
                      • mickym
                        mickym Most Active last edited by mickym

                        @mickym sagte in JSON Replace:

                        $~>|$|{'startsAt': $replace(startsAt,/.T(\d\d:\d\d)./,"$1") & " Uhr"}|

                        @BMP

                        Jetzt scheint es zu gehen - keine Ahnung warum:

                        1111facb-2c96-4877-8444-917f40dde893-image.png

                        Hier zum Import:

                        <xml xmlns="https://developers.google.com/blockly/xml">
                         <variables>
                           <variable id="lku$YIe5iNvg1c$0Ej,z">input</variable>
                         </variables>
                         <block type="variables_set" id="a:yUMjA;SVYpmzbjT2UH" x="62" y="38">
                           <field name="VAR" id="lku$YIe5iNvg1c$0Ej,z">input</field>
                           <value name="VALUE">
                             <block type="convert_json2object" id="4sG;:eC487S.@+;,|_3r">
                               <value name="VALUE">
                                 <block type="text" id="Zld5[!#Qb48.OxSetn^@">
                                   <field name="TEXT">[{"total":0.3018,"energy":0.098,"tax":0.2038,"startsAt":"2023-11-22T00:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.2982,"energy":0.095,"tax":0.2032,"startsAt":"2023-11-22T01:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.2982,"energy":0.095,"tax":0.2032,"startsAt":"2023-11-22T02:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.2946,"energy":0.092,"tax":0.2026,"startsAt":"2023-11-22T03:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.2952,"energy":0.0925,"tax":0.2027,"startsAt":"2023-11-22T04:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.298,"energy":0.0949,"tax":0.2031,"startsAt":"2023-11-22T05:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.3281,"energy":0.1202,"tax":0.2079,"startsAt":"2023-11-22T06:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.3526,"energy":0.1407,"tax":0.2119,"startsAt":"2023-11-22T07:00:00.000+01:00","currency":"EUR","level":"EXPENSIVE"},{"total":0.3656,"energy":0.1516,"tax":0.214,"startsAt":"2023-11-22T08:00:00.000+01:00","currency":"EUR","level":"EXPENSIVE"},{"total":0.3414,"energy":0.1313,"tax":0.2101,"startsAt":"2023-11-22T09:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.322,"energy":0.115,"tax":0.207,"startsAt":"2023-11-22T10:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.3085,"energy":0.1036,"tax":0.2049,"startsAt":"2023-11-22T11:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.299,"energy":0.0957,"tax":0.2033,"startsAt":"2023-11-22T12:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.307,"energy":0.1024,"tax":0.2046,"startsAt":"2023-11-22T13:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.3232,"energy":0.116,"tax":0.2072,"startsAt":"2023-11-22T14:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.3277,"energy":0.1198,"tax":0.2079,"startsAt":"2023-11-22T15:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.3363,"energy":0.127,"tax":0.2093,"startsAt":"2023-11-22T16:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.3433,"energy":0.1329,"tax":0.2104,"startsAt":"2023-11-22T17:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.3397,"energy":0.1299,"tax":0.2098,"startsAt":"2023-11-22T18:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.3265,"energy":0.1188,"tax":0.2077,"startsAt":"2023-11-22T19:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.3106,"energy":0.1054,"tax":0.2052,"startsAt":"2023-11-22T20:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.2918,"energy":0.0897,"tax":0.2021,"startsAt":"2023-11-22T21:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.2925,"energy":0.0902,"tax":0.2023,"startsAt":"2023-11-22T22:00:00.000+01:00","currency":"EUR","level":"NORMAL"},{"total":0.2741,"energy":0.0748,"tax":0.1993,"startsAt":"2023-11-22T23:00:00.000+01:00","currency":"EUR","level":"CHEAP"}]</field>
                                 </block>
                               </value>
                             </block>
                           </value>
                           <next>
                             <block type="debug" id="oBK%FiTk|+1L+m8FWjd7">
                               <field name="Severity">log</field>
                               <value name="TEXT">
                                 <shadow type="text" id="]8Er;zxg?rd2qL`S^-w,">
                                   <field name="TEXT">test</field>
                                 </shadow>
                                 <block type="variables_get" id="]9=A;bpa4Yk73NUVBKOG">
                                   <field name="VAR" id="lku$YIe5iNvg1c$0Ej,z">input</field>
                                 </block>
                               </value>
                               <next>
                                 <block type="debug" id="Z|^MIqi%,hIZomIBd82i">
                                   <field name="Severity">log</field>
                                   <value name="TEXT">
                                     <shadow type="text" id="!)(MH(n]Dbcg{-QnHP#!">
                                       <field name="TEXT">test</field>
                                     </shadow>
                                     <block type="convert_jsonata" id="OCPPy_qwDT^7)iKbCX`6">
                                       <value name="EXPRESSION">
                                         <shadow type="text" id="Dx7JBG-CyA5G|qNr}S/!">
                                           <field name="TEXT">$~&gt;|$|{'startsAt': $replace(startsAt,/.*T(\d\d:\d\d).*/,"$1") &amp; " Uhr"}|</field>
                                         </shadow>
                                       </value>
                                       <value name="TARGET">
                                         <block type="variables_get" id="N0h9PPzMtb?oPHrVua}}">
                                           <field name="VAR" id="lku$YIe5iNvg1c$0Ej,z">input</field>
                                         </block>
                                       </value>
                                     </block>
                                   </value>
                                 </block>
                               </next>
                             </block>
                           </next>
                         </block>
                        </xml>
                        

                        Der Unterschied war wohl dass ich beim ersten Mal einen Text in die debug Ausgabe genommen haben und dann wurde das Objekt wohl wieder in Text umgewandelt. Die Puzzleteilchen sind leider nicht immer berechenbar - aber es scheint zu funktionieren, wenn es eine Objekt ist.

                        B 1 Reply Last reply Reply Quote 1
                        • B
                          BMP @mickym last edited by

                          Danke euch beiden für die Hilfe.
                          Teste ich heute abend. Gestern hatte ich es mit RegEx in Node-Red gelöst, was auch geklappt hat.

                          mickym 1 Reply Last reply Reply Quote 0
                          • mickym
                            mickym Most Active @BMP last edited by mickym

                            @bmp na da hättest du ja auch direkt die JSONATA Lösung nehmen können, wenn du anstelle der Puzzleteilchen die mächtigen Knoten verwendest.

                            cbf9b170-bdec-42d7-a159-eff82ca8e64e-image.png

                            [
                               {
                                   "id": "9895941230ddcad6",
                                   "type": "ioBroker in",
                                   "z": "83a67ac0fc354489",
                                   "name": "",
                                   "topic": "0_userdata.0.Test.JSON",
                                   "payloadType": "value",
                                   "onlyack": "command",
                                   "func": "all",
                                   "gap": "",
                                   "fireOnStart": "false",
                                   "outFormat": "MQTT",
                                   "x": 350,
                                   "y": 980,
                                   "wires": [
                                       [
                                           "47b0fe3ab658bb64"
                                       ]
                                   ]
                               },
                               {
                                   "id": "c2c03a2987a18332",
                                   "type": "ioBroker out",
                                   "z": "83a67ac0fc354489",
                                   "name": "",
                                   "topic": "0_userdata.0.Test.JSON",
                                   "ack": "true",
                                   "autoCreate": "false",
                                   "stateName": "",
                                   "role": "",
                                   "payloadType": "",
                                   "readonly": "",
                                   "stateUnit": "",
                                   "stateMin": "",
                                   "stateMax": "",
                                   "x": 1110,
                                   "y": 1040,
                                   "wires": []
                               },
                               {
                                   "id": "47b0fe3ab658bb64",
                                   "type": "json",
                                   "z": "83a67ac0fc354489",
                                   "name": "",
                                   "property": "payload",
                                   "action": "",
                                   "pretty": false,
                                   "x": 550,
                                   "y": 980,
                                   "wires": [
                                       [
                                           "878f714edc01978d"
                                       ]
                                   ]
                               },
                               {
                                   "id": "8c98f07d4f1052ea",
                                   "type": "json",
                                   "z": "83a67ac0fc354489",
                                   "name": "",
                                   "property": "payload",
                                   "action": "",
                                   "pretty": false,
                                   "x": 910,
                                   "y": 980,
                                   "wires": [
                                       [
                                           "c2c03a2987a18332"
                                       ]
                                   ]
                               },
                               {
                                   "id": "878f714edc01978d",
                                   "type": "change",
                                   "z": "83a67ac0fc354489",
                                   "name": "",
                                   "rules": [
                                       {
                                           "t": "set",
                                           "p": "payload",
                                           "pt": "msg",
                                           "to": "payload~>|$|{\t   'startsAt':  $not($contains(startsAt,\"Uhr\")) ? $replace(startsAt,/.*T(\\d\\d:\\d\\d).*/,\"$1\") &   \" Uhr\"\t}|",
                                           "tot": "jsonata"
                                       }
                                   ],
                                   "action": "",
                                   "property": "",
                                   "from": "",
                                   "to": "",
                                   "reg": false,
                                   "x": 730,
                                   "y": 980,
                                   "wires": [
                                       [
                                           "8c98f07d4f1052ea"
                                       ]
                                   ]
                               }
                            ]
                            

                            B 1 Reply Last reply Reply Quote 0
                            • B
                              BMP @mickym last edited by

                              @mickym Es hat geklappt mit deiner Lösung im Blocky 😉
                              Vielen lieben dank für deine Hilfe.

                              So brauche ich Node-Red nicht mitlaufen lassen.

                              1 Reply Last reply Reply Quote 0
                              • First post
                                Last post

                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              518
                              Online

                              31.7k
                              Users

                              79.9k
                              Topics

                              1.3m
                              Posts

                              3
                              13
                              411
                              Loading More Posts
                              • Oldest to Newest
                              • Newest to Oldest
                              • Most Votes
                              Reply
                              • Reply as topic
                              Log in to reply
                              Community
                              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                              The ioBroker Community 2014-2023
                              logo