Google Chrome JSON.encode / array decodifica
-
26-10-2019 - |
Domanda
Quindi, sto scrivendo un po 'Greasemonkey userscript e il suo funzionamento benissimo in Firefox se io provo a farlo funzionare con Tampermonkey sul Googles Chrome ottengo erros strani durante la codifica / decodifica array.
I cercare di rendere compatibile il cross browser script così ho dovuto scrivere una funzione per decidere quale JSON metodi per utilizzare
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);
}
}
Per semplificare le cose ora ho ridotto il codice per un semplice array e il tentativo di codifica / decodifica e iterare
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]);
}
Mi aspetto che l'output di essere
string1
string2
invece cromo mi dà questo
[
"
s
t
r
i
n
g
1
"
,
"
s
t
r
i
n
g
2
"
]
Qualcuno ha qualche idea di come risolvere questo, o perché Chrome sta facendo questo?
Modifica 1: Chrome versione 15.0.874.121 m
EDIT 2: non hanno ancora capito, ma quando ho provato con un oggetto invece di un array funziona così farò in questo modo ora, grazie per il vostro tempo e aiuto
Soluzione
console Apri in Chrome JS - questo ti permette di impostare i punti di interruzione nel ciclo -. E aggiungere orologi sulle variabili
Oltre che jsonDecode non decodifica - c'è ancora la parentesi ...
Il problema è che a decodificare a stringa come è sembra - che il motivo per cui affetta la stringa in lettere -. Proprio come codificato che
JSON ordinaria rappresenta array ... forse controllare la documentazione per i parametri di output corretti.