simplejson.loads () obtiene Invalid \ escape: ‘x’

Estoy aprendiendo a usar simplejson para decodificar el archivo JSON. Pero sufrí el error “inválido \ escape”. Aquí está el código

import simplejson as json def main(): json.loads(r'{"test":"\x27"}') if __name__ == '__main__': main() 

Y aquí está el mensaje de error

 Traceback (most recent call last): File "hello_world.py", line 7, in  main() File "hello_world.py", line 4, in main json.loads(r'{"test":"\x27"}') File "C:\Users\zhangkai\python\simplejson\__init__.py", line 307, in loads return _default_decoder.decode(s) File "C:\Users\zhangkai\python\simplejson\decoder.py", line 335, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "C:\Users\zhangkai\python\simplejson\decoder.py", line 351, in raw_decode obj, end = self.scan_once(s, idx) File "C:\Users\zhangkai\python\simplejson\scanner.py", line 36, in _scan_once return parse_object((string, idx + 1), encoding, strict, _scan_once, object_ hook) File "C:\Users\zhangkai\python\simplejson\decoder.py", line 185, in JSONObject value, end = scan_once(s, end) File "C:\Users\zhangkai\python\simplejson\scanner.py", line 34, in _scan_once return parse_string(string, idx + 1, encoding, strict) File "C:\Users\zhangkai\python\simplejson\decoder.py", line 114, in py_scanstr ing raise ValueError(errmsg(msg, s, end)) ValueError: Invalid \escape: 'x': line 1 column 10 (char 10) 

Creo que se supone que json parser reconoce la fuga. Así que quiero saber qué está mal, y qué debo hacer.

JSON no tiene escape hexagonal ( \xNN ) como lo hacen algunos idiomas (incluido JavaScript) y notaciones, detalles aquí . Tiene un escape de Unicode, \uNNNN donde NNNN es de cuatro dígitos hexadecimales, pero no \x escape de hex.

Este es el comportamiento esperado de un analizador ya que JSON no es válido; dentro de una cadena, una barra puede estar seguida solo por " , \ , / , b , f , n , r , t o u (que luego debe ir seguida de 4 caracteres hexadecimales). No se permite una x . Consulte las especificaciones en http : //json.org/

prueba python-cjson

 import cjson s = cjson.encode({'abc':123,'def':'xyz'}) print 'json: %s - %s' % (type(s), s) s = cjson.decode(s) print '%s - %s' % (type(s), s)