dumps - python json to dict
python: json.dumps no puede manejar utf-8? (3)
A continuación se muestra el programa de prueba, que incluye un carácter chino:
# -*- coding: utf-8 -*-
import json
j = {"d":"中", "e":"a"}
json = json.dumps(j, encoding="utf-8")
print json
A continuación se muestra el resultado, mire los json.dumps ¡convierta el utf-8 a los números originales!
{"e": "a", "d": "/u4e2d"}
¿Por qué esto está roto? ¿O algo me equivoco?
Deberías leer json.org . La especificación JSON completa se encuentra en el cuadro blanco de la derecha.
No hay nada malo con el JSON generado. Los generadores pueden generar cadenas UTF-8 o cadenas ASCII simples, donde los caracteres se escapan con la notación /uXXXX
. En su caso, el módulo Python json
decidió escapar, y tiene la notación de escape /u4e2d
.
Por cierto: cualquier intérprete JSON que cumpla con las normas desaparezca correctamente esta secuencia de nuevo y le devolverá el carácter real.
Parece que JSON válido para mí. Si desea que json
una cadena que ensure_ascii=False
caracteres que no sean ASCII, entonces debe pasar ensure_ascii=False
y luego codificarlos manualmente.
Utilice simplejson con las opciones mencionadas:
# -*- coding: utf-8 -*-
import simplejson as json
j = {"d":"中", "e":"a"}
json = json.dumps(j, ensure_ascii=False, encoding="utf-8")
print json
Salidas:
{"e": "a", "d": "中"}