Code: Select all
{"lux": 0, "pressure": 0.0, "TVOC": 0, "temp": 0.0, "hum": 0.0, "AQI": 0, "eCO2": 0}
Code: Select all
async function get_data() {
await fetch('/api')
.then(resolve => resolve.json())
.then(data => jdata = data);
return jdata;
}
const JD = () => {
fetch('/api')
.then(resolve => resolve.json())
.then(data => jdata = data);
}
//let raw_data='{"lux":0, "pressure":0, "TVOC":0, "temp":0, "hum":0, "AQI":0, "eCO2":0}';
//jdata=JSON.parse(raw_data);
let raw_data = get_data();
jdata = JSON.parse(raw_data);
console.log(raw_data);
console.log(jdata);
console.log(JD);
console.log(jdata.lux);
document.getElementById("dane_temp").innerHTML = jdata.temp;
Uncaught SyntaxError: JSON.parse: unerwartetes Zeichen in Zeile 1, Spalte 2 der JSON-Datenzeile
also kommentiere ich die JSON.parse-Zeile. Das Problem ist, dass raw_data ein promise-Objekt ist und ich die JSON-Daten nicht richtig zuweisen kann jdata-Variable.
Ich habe im Allgemeinen Probleme damit, diese verschachtelten Objekte in etwas umzuwandeln, das ich analysieren kann. Wenn ich eine Zeichenfolge zuweise, wie im auskommentierten Abschnitt, kann ich JSON.parse ausführen und alles funktioniert, aber dann ist raw_data kein Objekt, sondern einfach die Zeichenfolge. Aber bei dieser asynchronen Funktion steht Folgendes in den raw_data:
Code: Select all
Promise { : "pending" }
: "fulfilled"
: Object { lux: 0, pressure: 0, TVOC: 0, … }
: Promise.prototype { … }
Ich habe verschiedene Beiträge in diesem Forum durchgesehen und aufgrund der Tatsache, dass ich normalerweise nicht in JS programmiere, habe ich Probleme zu verstehen, wie man eine Zeichenfolge aus diesem Versprechensobjekt herauszieht.
Können Sie mir dabei helfen?