JSON解码问题

时间:2011-07-14 17:24:08

标签: java python json jackson avro

我正在尝试解码Java程序(jackson)的JSON输出并遇到一些问题。 问题的原因如下:

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

导致ValueError: Invalid \uXXXX escape

有关如何解决此问题的任何想法?

编辑:输出来自Avro文件,Avro软件包使用jackson以JSON方式发出记录。
EDIT2:在源文件中查找之后,可能是JSON是手动构建的(抱歉杰克逊)。

5 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

尝试像这样引用\u

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

答案 2 :(得分:1)

基本上输入无效json。

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

答案 3 :(得分:0)

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

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

您可以在http://jira.codehaus.org/browse/JACKSON提交更改请求,以便杰克逊加强提供这样的功能,但我不确定请求会有多受欢迎,以及是否会实施。

答案 4 :(得分:0)

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