Pregunta

Por lo tanto, estoy escribiendo un poco de usuarios de Greasemonkey y está funcionando bien en Firefox, sin embargo, si trato de ejecutarlo con Tampermonkey en Googles Chrome, obtengo errores extraños al codificar/decodificar matrices.

Intento hacer compatible con el navegador cruzado de script, así que tuve que escribir una función para decidir qué métodos JSON usar

function jsonEncode(string) { 
  try {
    return JSON.stringify(string); 
  } catch (e) {
    return JSON.encode(string); 
  }
}

function jsonDecode(obj) {
  try { 
    return JSON.parse(obj); 
  } catch (e) { 
    return JSON.decode(obj);
  }
}

Para simplificar las cosas, ahora he reducido el código a una matriz simple y el intento de codificar/decodificar e iterar

var array = ['string1', 'string2'];

var encoded = jsonEncode(array);
localStorage.setItem('json_test', encoded);

var decoded = jsonDecode(localStorage.getItem('json_test'));
for(var i = 0; i < decoded.length; i++) {
    console.log(decoded[i]); 
}

Espero que la salida sea

string1
string2

En cambio, Chrome me da esto

[
"
s
t
r
i
n
g
1
"
,
"
s
t
r
i
n
g
2
"
]

¿Alguien tiene alguna idea de cómo resolver esto o por qué Chrome está haciendo eso?

Editar 1: Chrome versión 15.0.874.121 m

Editar 2: Todavía no lo he descubierto, pero cuando lo pruebo con un objeto en lugar de una matriz, funciona, así que lo haré de esta manera ahora, ¡gracias por su tiempo y ayuda!

¿Fue útil?

Solución

Abra la consola JS en Chrome: esto le permite establecer puntos de interrupción en el bucle y agregar relojes en las variables.

Además de eso, JSondecode no decodifica, todavía hay los soportes ...

El problema es que decodifique a la cadena tal como parece, por eso corta la cadena en letras, tal como la codificó.

JSON Ordinary representa matrices ... tal vez verifique la documentación de los parámetros de salida correctos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top