Estoy tratando de decodificar la salida JSON de un programa Java (jackson) y tengo algunos problemas. La causa del problema es el siguiente fragmento:
{
"description": "... lives\uMOVE™ OFFERS ",
}
Lo que causa ValueError: Invalid \uXXXX escape
.
¿Alguna idea sobre cómo solucionar este problema?
EDITAR: La salida es de un archivo Avro, el paquete Avro usa jackson para emitir registros como JSON.
EDIT2: después de hurgar en los archivos de origen, podría ser el caso de que el JSON se construye manualmente (lo siento, Jackson).
5 respuestas
Este es un error conocido en las versiones de Avro <1.6.0. Consulte AVRO-851 para obtener más detalles.
Básicamente la entrada no es válida json.
La especificación en http://www.json.org/ define cómo se deben codificar las cadenas. Tendrá que arreglar la salida JSON de la otra aplicación.
Jackson actualmente no tiene una función de configuración para permitir la aceptación de dicha entrada. (¿Se generó con Jackson?)
Puede modificar el analizador de flujo para manejarlo. Siga el seguimiento de la pila a los métodos que necesitarían cambiar.
Puede enviar una solicitud de cambio en http://jira.codehaus.org/browse/JACKSON para Jackson se mejorará para proporcionar dicha función, aunque no estoy seguro de cuán popular sería la solicitud y si alguna vez se implementaría.
¿Cómo se supone que se verá la cuerda original? \uXXXX
es una secuencia de escape unicode, por lo que interpreta \ uMOVE como un solo carácter, pero no es un valor unicode válido. Siempre se supone que JSON es unicode, por lo que es probable que deba arreglar la cadena en la aplicación de origen
Intenta citar la \u
así:
{
"description": "... lives\\uMOVE™ OFFERS ",
}
Preguntas relacionadas
Nuevas preguntas
java
Java es un lenguaje de programación de alto nivel. Utilice esta etiqueta cuando tenga problemas para usar o comprender el idioma en sí. Esta etiqueta rara vez se usa sola y se usa con mayor frecuencia junto con [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] y [maven].