Umwandlung von einem Array zu einem anderen

  • Moin,
    ich versuche für eine Dropdownliste dieses Result hier umzuwandeln, so das ich die Sender auswählen kann und per meiner eigenen Webgui umschalten kann.

    JavaScript
    {"id":1,"jsonrpc":"2.0","result":{"channels":[{"channelid":1,"label":"Das Erste HD"},{"channelid":2,"label":"ZDF HD"},{"channelid":14,"label":"NDR FS SH HD"},{"channelid":20,"label":"RTL Television"},{"channelid":21,"label":"RTL2"},{"channelid":22,"label":"SUPER RTL"},{"channelid":26,"label":"ProSieben"},{"channelid":28,"label":"kabel eins"},{"channelid":27,"label":"SAT.1"},{"channelid":23,"label":"VOX"},{"channelid":30,"label":"TELE 5"},{"channelid":25,"label":"TOGGO plus"},{"channelid":31,"label":"Disney Channel"},{"channelid":32,"label":"Comedy Central"},{"channelid":24,"label":"NITRO"},{"channelid":33,"label":"VOXup"},{"channelid":34,"label":"SIXX"},{"channelid":35,"label":"Pro7 MAXX"},{"channelid":37,"label":"ANIXE+"},{"channelid":36,"label":"SAT.1 Gold"},{"channelid":29,"label":"NICK/MTV+"},{"channelid":38,"label":"DMAX"},{"channelid":39,"label":"ServusTV Deutschland"},{"channelid":3,"label":"arte HD"},{"channelid":4,"label":"KiKA HD"},{"channelid":5,"label":"ONE HD"},{"channelid":6,"label":"zdf_neo HD"},{"channelid":7,"label":"ZDFinfo HD"},{"channelid":8,"label":"phoenix HD"},{"channelid":9,"label":"BR Fernsehen Nord HD"},{"channelid":40,"label":"ANIXE HD"},{"channelid":41,"label":"NIEDERBAYERN TV HD"},{"channelid":42,"label":"MTV"},{"channelid":11,"label":"BR Fernsehen Süd HD"},{"channelid":12,"label":"hr-fernsehen HD"},{"channelid":13,"label":"MDR Sachsen HD"},{"channelid":19,"label":"WDR HD Bonn"},{"channelid":15,"label":"Radio Bremen HD"},{"channelid":16,"label":"rbb Berlin HD"},{"channelid":17,"label":"SR Fernsehen HD"},{"channelid":18,"label":"SWR BW HD"},{"channelid":43,"label":"n-tv"},{"channelid":44,"label":"WELT"},{"channelid":45,"label":"N24 DOKU"},{"channelid":46,"label":"N24/WELT Interimskanal"},{"channelid":47,"label":"EURONEWS GERMAN SD"},{"channelid":48,"label":"kabel eins Doku"},{"channelid":49,"label":"phoenix"},{"channelid":50,"label":"health.tv"},{"channelid":10,"label":"tagesschau24 HD"}],"limits":{"end":50,"start":0,"total":50}}}

    Das ist jetzt der msg.payload
    Im Array Result -> channels ist ein weiteres Array mit Channelid und dazu passenden Label.

    Nun brauch ich dieses Unterarray in einem weiteren Array, muss es also umwandeln.
    msg.options ist das array
    es soll im Format sein Value:Label
    Also z.B. 40:Anixe HD

    nun würde ich gerne eine Funktion schreiben die das entsprechend umwandelt. Aber ich hab wirklich zu wenig Ahnung von JS. Kann mir da wer unter die Arme greifen?

    Die Schwierigkeit ist auch das diese Liste hier dynamisch ankommt. Ansonsten könnte ich ja einfach die Liste pflegen. Aber es soll ja automatisch gehen :)

    --------------
    Guides nicht mehr verfügbar wegen Youtube unvermögen guten von schlechten Kodi Videos zu unterscheiden.

    2 Mal editiert, zuletzt von SkyBird1980 (5. April 2021 um 20:10)

  • Das ist einfaches JSON. In welche Sprache brauchst du das denn? Eigentlich hat alles gängige einen JSON Parser bzw. es sollte nicht sonderlich schwierig sein, das auszulesen.

    Edit: Ah wir sind im Node-Red Forum. Da kenne ich mich null aus :D

    Vielleicht hilft dir ja das hier weiter:

    Die For Schleife geht durch dein JSON. Die Variable obj könntest du dann weiter für deine Zwecke nutzen.

  • Danke, muss schon Json sein :)
    Ich hab die oben genannten Result als Rückgabe von meinem Request.
    Den müsste ich nun halt teilweise umwandeln.
    also msg.payload.result.channels.channelid - dabei ist channels und result ein array
    sowie msg.payload.result.channels.label
    umwandeln in das array
    msg.options als array: Value:Label


    @KingBuzzo probier ich nach der Arbeit mal aus :)

    --------------
    Guides nicht mehr verfügbar wegen Youtube unvermögen guten von schlechten Kodi Videos zu unterscheiden.

  • Soooo, musste n bissl rumbauen aber nun gehts :D

    JavaScript
    msg.options = new Array();
    for (var i = 0; i < msg.payload.result.channels.length; i++) {
    msg.options[i]=new Object();
    msg.options[i] [msg.payload.result.channels[i].label]=msg.payload.result.channels[i].channelid;
    }    
    return msg;


    Und damit hab ich nun eine Liste und kann meine Sender umschalten wie ich mag .. ^^

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!