JavaScript: Wie kann ich JSON zu einem Array umwandeln?
Hey ich bin neu und muss eine JSON-Datei zu einem Array machen.
Meine JSON-Datei sieht in etwas so aus:
{
"stations": [
{
"mandator": "CAG",
"number": 858,
"displayName": "Haltestelle 1"
},
{
"mandator": "CAG",
"number": 859,
"displayName": "Haltestelle 2"
}
]
}
und ich brauche am Ende ein Array, welches wie folgt aussieht:
["Haltestelle 1", 858, "CAG"],
["Haltestelle 2", 859, "CAG"]
Wie kann man das mit JavaScript umsetzen? Es gibt eine ungenaue Anzahl an Haltestellen. Ich habe schon ein json_Data-Variable mit dem JSON drin.
Ich bitte um Hilfe und keine Aussagen, wie google doch.
Vielen Dank im Voraus
1 Antwort
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"]]
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 .
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
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
Alles gut hat sich geklärt habe das skript noch mal bissl ordentlicher aufgeschrieben, jetzt geht es wie es soll
Du missbrauchst .map() als .forEach(), find ich nicht gut, kein guter Stil :(
Entweder so, wenn du eh schon .map hernimmst:
Oder so:
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