JavaScript: Wie kann ich JSON zu einem Array umwandeln?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

https://jsfiddle.net/fmu5r07a/

var myjson = { "stations":[{"mandator": "CAG", "number": 858, "displayName": "Haltestelle 1"},{"mandator": "CAG", "number": 859, "displayName": "Haltestelle 2"}]}
myarr = []
myjson.stations.map((obj)=> {
  myarr.push([obj.displayName,obj.number,obj.mandator]);
}

)
console.log(myarr);

output : 
[["Haltestelle 1", 858, "CAG"], ["Haltestelle 2", 859, "CAG"]]
DoGame5 
Fragesteller
 05.08.2022, 13:14

Danke dir ich werde es dann mal ausprobieren <3

1
MrAmazing2  05.08.2022, 13:35

Du missbrauchst .map() als .forEach(), find ich nicht gut, kein guter Stil :(

Entweder so, wenn du eh schon .map hernimmst:

myarr = myjson.stations.map(obj => [obj.displayName, obj.number, obj.mandator]);

Oder so:

myarr = []
myjson.stations.forEach(obj => {
  myarr.push([obj.displayName, obj.number, obj.mandator]);
});

PS: Die Klammern um obj kann man weglassen. Die braucht man nur bei 2 oder mehr Argumenten.
PSPS: Was macht die ) in deinem Code da so ganz allein ganz unten? lol

2
TechPech1984  05.08.2022, 19:56
@MrAmazing2
PSPS: Was macht die ) in deinem Code da so ganz allein ganz unten? lol

ich hatte keine zeit zum formatieren ;) hatte irgendeine vorlage genommen und gelöscht was nicht brauchbar war .

1
DoGame5 
Fragesteller
 06.08.2022, 10:36
@MrAmazing2

Hey, eine Frage habe ich noch. Ich habe eine datei "data.json" woraus ich es lesen will. Ich habe jetzt so etwas gemacht aber es geht nicht:

var stopData = JSON.parse(fetch('./data.json').then((response) => response.json()).then((json) => console.log(json)));

aber das mit deinem Code zusammen funktioniert nicht wie gewollt. Was kann ich tun um den text in der data.json zu entschlüsseln? Rauskommen tut ja das was ich will. Aber es läst sich nicht weiter verarbeiten

0
TechPech1984  06.08.2022, 14:42
@DoGame5

eh die frage ist wo nutzt du den den code . den hier ist ja eine asynchrone geschichte am laufen .

ergo der code ist schon lange zu ende bis die antwort kommt .

bei sowas musst du auf die daten warten

function readTextFile(file, callback) {
    var rawFile = new XMLHttpRequest();
    rawFile.overrideMimeType("application/json");
    rawFile.open("GET", file, true);
    rawFile.onreadystatechange = function() {
        if (rawFile.readyState === 4 && rawFile.status == "200") {
            callback(rawFile.responseText);
        }
    }
    rawFile.send(null);
}

//usage:
readTextFile("/Users/Documents/workspace/test.json", function(text){
    var data = JSON.parse(text);
    console.log(data);
});

https://stackoverflow.com/questions/19706046/how-to-read-an-external-local-json-file-in-javascript

bzw mit dem asynchonen callback arbeiten . oder ein await etc einbauen das du es quasi wie eine synchrone funktion nutzen kannst

https://dmitripavlutin.com/fetch-with-json/

0
DoGame5 
Fragesteller
 06.08.2022, 14:59
@TechPech1984

Alles gut hat sich geklärt habe das skript noch mal bissl ordentlicher aufgeschrieben, jetzt geht es wie es soll

1