Google Chrome JSON.encode / matrice de décodage
-
26-10-2019 - |
Question
Alors, je vous écris un peu Greasemonkey UserScript et son beau travail dans Firefox si je tente de l'exécuter avec Tampermonkey sur Googles Chrome-je obtenir erros étranges lors de l'encodage / décodage des tableaux.
J'essaie de rendre compatibles le navigateur cross script si je devais écrire une fonction de décider quelles méthodes JSON utiliser
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);
}
}
Pour simplifier les choses, je l'ai maintenant réduit le code à un simple tableau et la tentative de codage / décodage et itérer
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]);
}
Je pense que la sortie soit
string1
string2
au lieu de chrome me donne ce
[
"
s
t
r
i
n
g
1
"
,
"
s
t
r
i
n
g
2
"
]
Est-ce que quelqu'un a une idée comment résoudre ce problème, ou pourquoi le chrome est en train de faire ça?
EDIT 1: Version Chrome 15.0.874.121 m
EDIT 2: ont pas encore pensé à elle, mais quand je l'essayer avec un objet au lieu d'un tableau, il fonctionne donc je vais le faire de cette façon maintenant, merci pour votre temps et votre aide
La solution
Ouvrez la console JS dans Chrome - ce que vous let est défini des points d'arrêt dans la boucle -. Et d'ajouter des montres sur les variables
A côté de cela jsonDecode ne decode - il y a encore les supports ...
Le problème est que vous décodez à chaîne comme il est semble - ce pourquoi il fend la chaîne en lettres -. Comme vous il avons écrit
JSON représente ordinaire des tableaux ... peut-être vérifier la documentation pour les paramètres de sortie corrects.