Frage

Also schreibe ich ein kleines Greasemonkey -Benutzerkript und es funktioniert in Firefox gut, aber wenn ich versuche, es mit Tampermonkey auf Googles Chrome auszuführen, bekomme ich seltsame Fehler bei der Codierung/Dekodierung von Arrays.

Ich versuche, das Skript -Cross -Browser kompatibel zu machen, damit ich eine Funktion schreiben musste, um zu entscheiden, welche JSON -Methoden verwendet werden sollen

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);
  }
}

Um Dinge zu vereinfachen, die ich jetzt den Code auf ein einfaches Array und den Versuch, zu codieren/zu dekodieren und zu iterieren, reduziert

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]); 
}

Ich erwarte, dass die Ausgabe ist

string1
string2

Stattdessen gibt mir Chrome das

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

Hat jemand eine Idee, wie man das lösen kann oder warum Chrome das tut?

Bearbeiten 1: Chromversion 15.0.874.121 m

Bearbeiten 2: Habe es immer noch nicht herausgefunden, aber wenn ich es mit einem Objekt anstelle eines Arrays versuche, funktioniert es, also werde ich es jetzt so tun, danke für deine Zeit und Hilfe!

War es hilfreich?

Lösung

Öffnen Sie die JS -Konsole in Chrome - Sie können Bruchpunkte in der Schleife festlegen - und fügen Sie Uhren auf Variablen hinzu.

Neben diesem jSondecode decodiert es nicht - es gibt immer noch die Klammern ...

Das Problem ist, dass Sie zu String dekodieren, wie es so ist - deshalb, warum es die Zeichenfolge in Buchstaben schneidet - so wie Sie sie codiert haben.

JSON AUTRIERHE repräsentiert Arrays ... Überprüfen Sie möglicherweise die Dokumentation auf korrekte Ausgabeparameter.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top