javascript - JSON.parse verschachtelte JSON-String-Eigenschaft parsen
Ich erhalte die folgende Zeichenkette von einem API-Modul:
{"value":"{\"Id\":\"100\",\"OrganizationName\":\"[_+-:|;'."/] Arizona
Grower Automation\"}"}
Wenn ich JSON.parse auf der Client-Seite verwende, erhalte ich:
Uncaught SyntaxError: Unexpected token I in JSON at position 12
Dies funktioniert, wenn die Anführungszeichen darin doppelt escaped sind, aber wie ist der beste Weg, dies zu tun? Genauer gesagt wird dies von einem Ionic Capacitor Plugin aus dem nativen Code in die JavaScript-Umgebung zurückgegeben.
Antwort #1
Sie müssen sowohl den Rückwärtsschrägstrich als auch die Anführungszeichen escapen:
/// NO!
JSON.parse('{"value":"{\"Id\":\"100\",\"OrganizationName\":\"[_+-:|;\'."/] Arizona Grower Automation\"}"}');
/// Syntax Error: Unexpected token I in JSON at position 12
/// YES!
JSON.parse('{"value":"{""Id"":""100"",""OrganizationName"":""[_+-:|;\'."/] Arizona Grower Automation""}"}');
/// value: "{"Id":"100","OrganizationName":"[_+-:|;'./] Arizona Grower Automation"}"
Wir brauchen drei Rückwärtsschrägstriche, weil die ersten beiden einen einzelnen Rückwärtsschrägstrich escaped darstellen, der dritte ist das Escape-Zeichen für die Anführungszeichen.
