com.fasterxml.jackson.core.JsonParseException:无法识别的字符转义'U'(代码85)

时间:2015-07-29 11:30:22

标签: java json jackson

我一直在寻找解决方案几个小时但没有成功。我有一个json字符串,我尝试映射到我的java模型,但运行代码我得到上述异常。 JSON字符串:

{"productOptions" : {"2-bruch Kreuzfalz" : "nein"},"uploadData" : {"20682967" : {"mergedFile" : "C:\Users\userName\IdeaProjects\projectName\target\test-classes\com\flyeralarm\tools\kronos\order\integration\input\DE151886742X01_20150727131135.pdf"}}}

为了节省时间和空间,我不会发布java模型代码,但是如果需要它来解决任务我会这样做。我怀疑是因为合并文件的路径包含'C:\ Users',其中反斜杠后跟char'U'。由于它只是一个嫌疑人,我不太清楚该怎么做。我做的......错误?我该如何解决错误?

更新

如果我是对的并且杰克逊试图逃脱路径中的“U”,那为什么会这样呢?我故意把路径放到引号中。为什么杰克逊认为斜线是逃避尝试?

3 个答案:

答案 0 :(得分:2)

问题是你问题中的原始JSON无效。

根据JSON specification,字符串的(BNF)语法为:

string ::= "" 
           " chars "
chars  ::= char
           char chars
char   ::= any-Unicode-character-except-"-or-\-or-control-character
           \"
           \\
           \/
           \b
           \f
           \n
           \r
           \t
           \u four-hex-digits 

在英语中,这意味着字符串中的反斜杠是一个转义字符,并且后面不能跟一个大写U

  

如果我是对的,杰克逊试图逃避“你好”。在路上,为什么会这样呢?

因为JSON规范说它必须这样做。问题在于你对JSON的理解,而不是杰克逊的行为。

如果要在JSON字符串中包含文字反斜杠,则需要使用反斜杠转义它们... e.g。

    {"mergedFile" : "C:\\Users\\userName\\frobbit.pdf"}

答案 1 :(得分:0)

只是尝试将反斜杠更改为正常的斜杠并且它有效。有点奇怪,我被迫只使用一种类型的斜杠,但至少它现在有效。澄清: 改变

"C:\Users\userName\IdeaProjects\projectName\target\test-classes\com\flyeralarm\tools\kronos\order\integration\input\DE151886742X01_20150727131135.pdf"

"C:/Users/a.eirich/IdeaProjects/kronos/src/test/resources/com/flyeralarm/tools/kronos/order/integration/input/DE151886742X01_20150727131135.pdf"

完成了这项工作。

答案 2 :(得分:0)

我知道这有点晚了,但是有2次反冲引发了相同的错误

有4个反冲\\\\有效

我在MySQL数据库中有此记录 “ {\” mergedFile \“:\” C:\\\\ Users \\\\ userName \\\\ frobbit.pdf \“}”