3

我正在尝试解码 Java 程序(杰克逊)的 JSON 输出并遇到一些问题。问题的原因是以下代码段:

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

这导致ValueError: Invalid \uXXXX escape.

有想法该怎么解决这个吗?

编辑:输出来自 Avro 文件,Avro 包使用 jackson 将记录作为 JSON 发出。
EDIT2:在源文件中查看之后,可能是手动构造 JSON 的情况(对不起,杰克逊)。

4

5 回答 5

4

原始字符串应该是什么样子?\uXXXX是一个 unicode 转义序列,因此它将 \uMOVE 解释为单个字符,但它不是有效的 unicode 值。JSON 始终假定为 unicode,因此您可能需要修复原始应用程序中的字符串

于 2011-07-14T17:31:02.883 回答
1

尝试引用\u这样的:

{
    "description": "... lives\\uMOVE™ OFFERS ", 
}
于 2011-07-14T17:36:22.587 回答
1

基本上输入不是有效的json。

http://www.json.org/上的规范定义了字符串的编码方式。您必须修复来自其他应用程序的 JSON 输出。

于 2011-07-14T17:41:42.637 回答
0

这是 Avro 版本 < 1.6.0 中的一个已知错误。有关详细信息,请参阅AVRO-851 。

于 2011-09-05T06:12:14.257 回答
0

Jackson 目前没有允许接受此类输入的配置功能。(它是由杰克逊生成的吗?)

您可以修改流解析器来处理它。跟踪堆栈跟踪到需要更改的方法。

您可以在http://jira.codehaus.org/browse/JACKSON提交更改请求,让 Jackson 得到增强以提供这样的功能,但我不确定该请求有多受欢迎,以及它是否会实施的。

于 2011-07-14T18:06:54.560 回答