Tengo una aplicación que está enviando un objeto JSON (formateado con Prototype) a un servidor ASP. En el servidor, el módulo "json" de Python 2.6 intenta cargar() el JSON, pero se está ahogando en una combinación de barras invertidas. Observe:Python: json.loads se ahoga en escapes
>>> s
'{"FileExists": true, "Version": "4.3.2.1", "Path": "\\\\host\\dir\\file.exe"}'
>>> tmp = json.loads(s)
Traceback (most recent call last):
File "<interactive input>", line 1, in <module>
{... blah blah blah...}
File "C:\Python26\lib\json\decoder.py", line 155, in JSONString
return scanstring(match.string, match.end(), encoding, strict)
ValueError: Invalid \escape: line 1 column 58 (char 58)
>>> s[55:60]
u'ost\\d'
Así que la columna 58 es la fuga-backslash. ¡Pensé que esto FUE escapado correctamente! UNC es \\host\dir\file.exe
, así que simplemente dupliqué en barras. Pero aparentemente esto no es bueno. ¿Alguien puede ayudar? Como último recurso, estoy considerando convertir el \ a/y luego volver otra vez, pero esto parece un verdadero truco para mí.
¡Gracias de antemano!
:) >>> s = r '{ "FileExists": true , "Versión": "4.3.2.1", "Ruta": "\\\\ host \\ dir \\ file.exe"} ' >>> json.load (s) {u'FileExists' : Es cierto, u'Path ': u' \\\\ host \\ dir \\ file.exe ', u'Version': u'4.3.2.1 '} – Chris
Entonces, ¿qué está haciendo en realidad? ¿Cómo puedo aplicarlo a una cadena que ya está almacenada como, por ejemplo, "foo"? ¿Es algún tipo de codificación? – Chris
''s ='' rompe el formateo. – jfs