Проблема с декодированием JSON - PullRequest
3 голосов
/ 14 июля 2011

Я пытаюсь декодировать вывод JSON Java-программы (Джексон) и у меня возникают некоторые проблемы.Причиной проблемы является следующий фрагмент:

{
    "description": "... lives\uMOVE™ OFFERS ",
}

Что вызывает ValueError: Invalid \uXXXX escape.

Любые идеи о том, как это исправить?

РЕДАКТИРОВАТЬ: Выходные данныеиз файла Avro пакет Avro использует Джексон для передачи записей в формате JSON.РЕДАКТИРОВАТЬ 2: После поиска в исходных файлах, JSON может быть создан вручную (извините, Джексон).

Ответы [ 5 ]

4 голосов
/ 14 июля 2011

Как должна выглядеть оригинальная строка?\uXXXX является escape-последовательностью Unicode, поэтому она интерпретирует \ uMOVE как один символ, но это недопустимое значение Unicode.Предполагается, что JSON всегда является юникодом, поэтому вам, вероятно, потребуется исправить строку в исходном приложении

1 голос
/ 14 июля 2011

В основном ввод недействителен JSON.

Спецификация http://www.json.org/ определяет способ кодирования строк.Вам придется исправить вывод JSON из другого приложения.

1 голос
/ 14 июля 2011

Попробуйте процитировать \u так:

{
    "description": "... lives\\uMOVE™ OFFERS ", 
}
0 голосов
/ 05 сентября 2011

Это известная ошибка в версиях Avro <1.6.0. Подробнее см. <a href="https://issues.apache.org/jira/browse/AVRO-851" rel="nofollow"> AVRO-851 .

0 голосов
/ 14 июля 2011

Джексон в настоящее время не имеет функции конфигурации, позволяющей принимать такой ввод. (Это было сгенерировано с Джексоном?)

Вы можете изменить потоковый парсер для его обработки. Следуйте трассировке стека до метода (ов), который необходимо изменить.

Вы можете отправить запрос на изменение в http://jira.codehaus.org/browse/JACKSON, чтобы Джексон был расширен для предоставления такой функции, хотя я не уверен, насколько популярным будет запрос и будет ли он когда-либо реализован.

...