Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. [gelöst]-JS-hilfe beim sortieren eines JSONs

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.7k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.1k

[gelöst]-JS-hilfe beim sortieren eines JSONs

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascript
9 Beiträge 3 Kommentatoren 955 Aufrufe 4 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • liv-in-skyL Offline
    liv-in-skyL Offline
    liv-in-sky
    schrieb am zuletzt editiert von liv-in-sky
    #1

    hat jmd einen tipp wie man ein json sortiert?

    das json sieht so aus und die sotierung sollte nach dem hostnamen sein :
    Image 2.png

    nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

    AlCalzoneA 1 Antwort Letzte Antwort
    0
    • liv-in-skyL liv-in-sky

      hat jmd einen tipp wie man ein json sortiert?

      das json sieht so aus und die sotierung sollte nach dem hostnamen sein :
      Image 2.png

      AlCalzoneA Offline
      AlCalzoneA Offline
      AlCalzone
      Developer
      schrieb am zuletzt editiert von
      #2

      @liv-in-sky Wenn es eine manuelle Aktion sein darf:
      VSCode mit dem Plugin Sort-JSON.

      Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

      liv-in-skyL 1 Antwort Letzte Antwort
      0
      • AlCalzoneA AlCalzone

        @liv-in-sky Wenn es eine manuelle Aktion sein darf:
        VSCode mit dem Plugin Sort-JSON.

        liv-in-skyL Offline
        liv-in-skyL Offline
        liv-in-sky
        schrieb am zuletzt editiert von
        #3

        @AlCalzone danke - ich meinte in einem script - ich bekomme diese daten immer wieder und lese sie aus - damit erstelle ich einen datenpunkt, der als html-formatiert ist- also genau gesagt - drei datenpukte (hostname, macadresse und ssid-

        jetzt stehe ich vor dem problem: entweder ich sortiere das json nachdem es angekommen ist oder ich muss bevor ich das html erzeuge ein eigenes object erstellen und dieses sortieren (wäre doch "doppelt-gemobbelt") - oder hast du eine idee

        ich habe auch sort-json in zusätzliche module mal eingetragen - aber ich glaube die wollen nur dateien von der festplatte - oder verstehe ich das falsch
        https://www.npmjs.com/package/sort-json

        nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

        paul53P AlCalzoneA 2 Antworten Letzte Antwort
        0
        • liv-in-skyL liv-in-sky

          @AlCalzone danke - ich meinte in einem script - ich bekomme diese daten immer wieder und lese sie aus - damit erstelle ich einen datenpunkt, der als html-formatiert ist- also genau gesagt - drei datenpukte (hostname, macadresse und ssid-

          jetzt stehe ich vor dem problem: entweder ich sortiere das json nachdem es angekommen ist oder ich muss bevor ich das html erzeuge ein eigenes object erstellen und dieses sortieren (wäre doch "doppelt-gemobbelt") - oder hast du eine idee

          ich habe auch sort-json in zusätzliche module mal eingetragen - aber ich glaube die wollen nur dateien von der festplatte - oder verstehe ich das falsch
          https://www.npmjs.com/package/sort-json

          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von paul53
          #4

          @liv-in-sky
          Versuche es mal so (nicht getestet):

          var data = JSON.parse(json).data; // Array
          data.sort(function(a, b) {
              if(a.hostname < b.hostname) return -1;
              if(a.hostname > b.hostname) return 1;
              return 0;
          });
          

          Quelle

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          liv-in-skyL 1 Antwort Letzte Antwort
          2
          • liv-in-skyL liv-in-sky

            @AlCalzone danke - ich meinte in einem script - ich bekomme diese daten immer wieder und lese sie aus - damit erstelle ich einen datenpunkt, der als html-formatiert ist- also genau gesagt - drei datenpukte (hostname, macadresse und ssid-

            jetzt stehe ich vor dem problem: entweder ich sortiere das json nachdem es angekommen ist oder ich muss bevor ich das html erzeuge ein eigenes object erstellen und dieses sortieren (wäre doch "doppelt-gemobbelt") - oder hast du eine idee

            ich habe auch sort-json in zusätzliche module mal eingetragen - aber ich glaube die wollen nur dateien von der festplatte - oder verstehe ich das falsch
            https://www.npmjs.com/package/sort-json

            AlCalzoneA Offline
            AlCalzoneA Offline
            AlCalzone
            Developer
            schrieb am zuletzt editiert von
            #5

            @liv-in-sky Ahh, ich hatte dich falsch verstanden, du willst ein Array von Objekten nach einem Schlüssel sortieren. Paul hatte mal wieder die richtige Antwort.

            Immerhin hast du mich auch falsch verstanden :laughing:
            Ich meinte nicht das node-Modul sort-json, sondern das Plugin für VSCode. Das sortiert aber ein einzelnes Objekt nach den Schlüsseln, z.B. so:

            {
                "z": ...,
                "b": ...,
                "a": ...
            }
            

            wird im Editor zu

            {
                "a": ...,
                "b": ...,
                "z": ...
            }
            

            Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

            1 Antwort Letzte Antwort
            0
            • paul53P paul53

              @liv-in-sky
              Versuche es mal so (nicht getestet):

              var data = JSON.parse(json).data; // Array
              data.sort(function(a, b) {
                  if(a.hostname < b.hostname) return -1;
                  if(a.hostname > b.hostname) return 1;
                  return 0;
              });
              

              Quelle

              liv-in-skyL Offline
              liv-in-skyL Offline
              liv-in-sky
              schrieb am zuletzt editiert von
              #6

              @paul53 @AlCalzone

              ich hab das schon mal versucht - -aber leider ohne erfolg:

              das problem war, das ich das parsen auf - die erste zeile von paul nicht hinbekommen hatte - bzw. nicht wußte, dass dies ein guter weg wäre

              danke an euch beide jetzt klappt es !!!!

              1445small--robots-winziger.png

              nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

              1 Antwort Letzte Antwort
              0
              • liv-in-skyL Offline
                liv-in-skyL Offline
                liv-in-sky
                schrieb am zuletzt editiert von liv-in-sky
                #7

                @AlCalzone @paul53

                sorry - jetzt hätte ich noch eine frage:

                habe eine constante:

                const wifis = {
                   "WLAN_Dragon1": { name: "WLAN_Dragon1", id: "xxxxxxxxxx", desc: "WLAN_Dragon", smart: "WLAN_DragonRoot1" } ,
                   "WLAN_DragonGuest": { name: "WLAN_DragonGuest", id: "xxxxxxxxx", desc: "WLAN_DragonGuest", smart: "WLAN_DragoGuest" }
                }
                let wifiDPs = [];
                

                und es werden automatisch datenpunkte dazu angelegt:

                for(let wifi_name in wifis) {
                  // wifiDPs.push(dpPrefix + wifis[wifi_name].id);
                     wifiDPs.push(dpPrefix + "WLANUnifi." + wifis[wifi_name].name);
                    
                    createState(dpPrefix + "WLANUnifi."+ wifi_name, {
                       name: wifis[wifi_name].desc,
                       role: 'state',
                       read: true,
                       write: true,
                       type: "boolean",
                       smartName: {
                           de: wifis[wifi_name].smart,
                           smartType: "SWITCH"
                       }
                         });
                       createState(dpPrefix + "WLANUnifi."+ wifi_name + "_Schalter", {
                       name: wifis[wifi_name].desc,
                       role: 'state',
                       read: true,
                       write: true,
                       type: "boolean",
                       smartName: {
                           de: wifis[wifi_name].smart,
                           smartType: "SWITCH"
                       }
                
                   });
                
                }
                

                leider check ich nicht, wie ich auf die schalter reagieren (triggern) kann - muss ich das über einen selektor machen oder gibt es einen anderen weg?

                ursprünglich wurde das vorgeschlagen (ohne den "schalter datenpunkt") - aber das funktioniert nicht

                on({ id: wifiDPs, ack: false }, (dp) => {
                    log("yes");
                   let wlan_id = dp.id.substring(dp.id.lastIndexOf(".")+1);
                   log("State Changed: " + wlan_id);
                   setWifi(dp.state.val, wifis[wlan_id].id);
                });
                

                könntet ihr mir da bitte einen tipp geben

                nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                liv-in-skyL 1 Antwort Letzte Antwort
                0
                • liv-in-skyL liv-in-sky

                  @AlCalzone @paul53

                  sorry - jetzt hätte ich noch eine frage:

                  habe eine constante:

                  const wifis = {
                     "WLAN_Dragon1": { name: "WLAN_Dragon1", id: "xxxxxxxxxx", desc: "WLAN_Dragon", smart: "WLAN_DragonRoot1" } ,
                     "WLAN_DragonGuest": { name: "WLAN_DragonGuest", id: "xxxxxxxxx", desc: "WLAN_DragonGuest", smart: "WLAN_DragoGuest" }
                  }
                  let wifiDPs = [];
                  

                  und es werden automatisch datenpunkte dazu angelegt:

                  for(let wifi_name in wifis) {
                    // wifiDPs.push(dpPrefix + wifis[wifi_name].id);
                       wifiDPs.push(dpPrefix + "WLANUnifi." + wifis[wifi_name].name);
                      
                      createState(dpPrefix + "WLANUnifi."+ wifi_name, {
                         name: wifis[wifi_name].desc,
                         role: 'state',
                         read: true,
                         write: true,
                         type: "boolean",
                         smartName: {
                             de: wifis[wifi_name].smart,
                             smartType: "SWITCH"
                         }
                           });
                         createState(dpPrefix + "WLANUnifi."+ wifi_name + "_Schalter", {
                         name: wifis[wifi_name].desc,
                         role: 'state',
                         read: true,
                         write: true,
                         type: "boolean",
                         smartName: {
                             de: wifis[wifi_name].smart,
                             smartType: "SWITCH"
                         }
                  
                     });
                  
                  }
                  

                  leider check ich nicht, wie ich auf die schalter reagieren (triggern) kann - muss ich das über einen selektor machen oder gibt es einen anderen weg?

                  ursprünglich wurde das vorgeschlagen (ohne den "schalter datenpunkt") - aber das funktioniert nicht

                  on({ id: wifiDPs, ack: false }, (dp) => {
                      log("yes");
                     let wlan_id = dp.id.substring(dp.id.lastIndexOf(".")+1);
                     log("State Changed: " + wlan_id);
                     setWifi(dp.state.val, wifis[wlan_id].id);
                  });
                  

                  könntet ihr mir da bitte einen tipp geben

                  liv-in-skyL Offline
                  liv-in-skyL Offline
                  liv-in-sky
                  schrieb am zuletzt editiert von
                  #8

                  @AlCalzone @paul53
                  ich bräuchte bitte nochmal eure hilfe

                  habe problem so gelöst und noch ein detail funktioniert nicht und zwar beim ersten aufruf des scripts:

                  die constante ist :

                  const wifis = {
                     "WLAN_Dragon1": { name: "WLAN_Dragon1", id: "xxxxxxxxxx", desc: "WLAN_Dragon", smart: "WLAN_DragonRoot1" } ,
                     "WLAN_DragonGuest": { name: "WLAN_DragonGuest", id: "xxxxxxxxx", desc: "WLAN_DragonGuest", smart: "WLAN_DragoGuest" }
                  }
                  let wifiDPs = [];
                  
                  //hier ist eine schleife
                   wifiDPs.push(dpPrefix + "WLANUnifi." + wifis[wifi_name].name);
                      
                  

                  der aufruf funktioniert auch - aber das problem ist, er wird gleich mehrmals aufgerufen, wenn das script beim aller erstenmal startet - also setWifi() wird

                  on({id: wifiDPs, ack: false, change: "ne"}, function (obj) { 
                    var dp2 = obj.name
                    setWifi(value, wifis[dp2]);
                    dlog(wifis[dp2])
                  });
                  
                  

                  hier das log: 6mal aufgerufen

                  javascript.2	2019-09-03 11:43:58.777	info	script.js.Armin_Schalter.ALLERLEI.UnifiWLAN3bkpbkp: setWifi: start set Wifi_haupt
                  javascript.2	2019-09-03 11:43:58.773	info	script.js.Armin_Schalter.ALLERLEI.UnifiWLAN3bkpbkp: setWifi: start set Wifi_haupt
                  javascript.2	2019-09-03 11:43:41.819	info	script.js.Armin_Schalter.ALLERLEI.UnifiWLAN3bkpbkp: setWifi: start set Wifi_haupt
                  javascript.2	2019-09-03 11:43:41.819	info	script.js.Armin_Schalter.ALLERLEI.UnifiWLAN3bkpbkp: setWifi: start set Wifi_haupt
                  javascript.2	2019-09-03 11:43:41.819	info	script.js.Armin_Schalter.ALLERLEI.UnifiWLAN3bkpbkp: setWifi: start set Wifi_haupt
                  javascript.2	2019-09-03 11:43:41.818	info	script.js.Armin_Schalter.ALLERLEI.UnifiWLAN3bkpbkp: setWifi: start set Wifi_haupt
                  javascript.2	2019-09-03 11:43:38.646	info	script.js.Armin_Schalter.ALLERLEI.UnifiWLAN3bkpbkp: registered 4 subscriptions and 0 schedules
                  

                  beim script stoppen und starten ist das nicht der fall

                  nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                  1 Antwort Letzte Antwort
                  0
                  • liv-in-skyL Offline
                    liv-in-skyL Offline
                    liv-in-sky
                    schrieb am zuletzt editiert von
                    #9

                    hat sich erledigt

                    nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                    1 Antwort Letzte Antwort
                    0
                    Antworten
                    • In einem neuen Thema antworten
                    Anmelden zum Antworten
                    • Älteste zuerst
                    • Neuste zuerst
                    • Meiste Stimmen


                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    839

                    Online

                    32.4k

                    Benutzer

                    81.5k

                    Themen

                    1.3m

                    Beiträge
                    Community
                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                    ioBroker Community 2014-2025
                    logo
                    • Anmelden

                    • Du hast noch kein Konto? Registrieren

                    • Anmelden oder registrieren, um zu suchen
                    • Erster Beitrag
                      Letzter Beitrag
                    0
                    • Home
                    • Aktuell
                    • Tags
                    • Ungelesen 0
                    • Kategorien
                    • Unreplied
                    • Beliebt
                    • GitHub
                    • Docu
                    • Hilfe