es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

localStorage devuelve null debido a un error de análisis.

Sé que esta pregunta ya ha sido planteada aquí, pero estas soluciones no me han ayudado. Incluso podría saber cuál es el problema, pero no puedo averiguar cómo solucionarlo.

Estoy intentando analizar un texto que recibo desde mi backend y quiero almacenarlo en localStorage utilizando setItem. Funciona bien. Cuando cargo la otra página todavía tengo la información. Cuando intento analizarla de vuelta y almacenar el valor de algunas claves en una lista, no funciona. Estoy usando un bucle for para recorrer la información, pero creo que el problema es que el bucle todavía lo reconoce como una cadena y se recorre cada letra en lugar de cada clave. Así que es por eso que no encuentra mis claves dadas. El código js para la página 1 donde obtengo los datos del backend se parece a esto:

xhttp.onload = function() {

    var jsonResponse = JSON.parse(this.responseText);
    localStorage.setItem("Json", JSON.stringify(this.responseText)); // <-----

    showDataInTable(jsonResponse);

    var label = document.getElementById("labelOfMaxPages");
    label.innerText = "von " + maxPages;
}

En el otro archivo js donde quiero recopilar los datos, es así:

window.onload = function() {
var jsonResponse = JSON.parse(localStorage.getItem(“Json”)); // <—-
console.log(“JSON RESP: ” + jsonResponse);
console.log(“LENGTH: ” + jsonResponse.length);
var diesel = getListFromJson(“diesel”, jsonResponse);
var e5 = getListFromJson(“e5”, jsonResponse);
var e10 = getListFromJson(“e10”, jsonResponse);
console.log(diesel);
const chart = document.getElementById(“line-chart”);
}

function getListFromJson(type, jsonResp) {

var typeList = [];
for (index = 0; index <= jsonResp.length - 1; index++) {
    typeList.push(jsonResp[index].type);
}
return typeList;

}

Y esto es lo que obtengo en la consola:

¡Gracias de antemano!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema es que estás intentando iterar a través del jsonResponse como si fuera una cadena, cuando en realidad es un objeto. Puedes usar Object.keys () para obtener una matriz de las claves en el objeto, y luego iterar a través de esa matriz para acceder a los valores asociados con cada clave.

    Por ejemplo, podrías modificar tu función getListFromJson para que se vea así:

    function getListFromJson(type, jsonResp) {
        var typeList = [];
        var keys = Object.keys(jsonResp);
        for (index = 0; index <= keys.length - 1; index++) {
            typeList.push(jsonResp[keys[index]][type]);
        }
        return typeList;
    }
    

    Esto debería permitirte acceder a los valores asociados con cada clave en el objeto jsonResponse.

Comments are closed.