Java com.fasterxml.jackson.core.JsonParseException:无法识别的字符转义';U';(代码85)
我已经寻找了几个小时的解决方案,但没有成功。我有一个json字符串,我试图将它映射到我的java模型,但是运行代码时,我得到了上面的异常。 JSON字符串:Java com.fasterxml.jackson.core.JsonParseException:无法识别的字符转义';U';(代码85),java,json,jackson,Java,Json,Jackson,我已经寻找了几个小时的解决方案,但没有成功。我有一个json字符串,我试图将它映射到我的java模型,但是运行代码时,我得到了上面的异常。 JSON字符串: {"productOptions" : {"2-bruch Kreuzfalz" : "nein"},"uploadData" : {"20682967" : {"mergedFile" : "C:\Users\userName\IdeaProjects\projectName\target\test-classes\com\flyeral
{"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”,其中反斜杠后跟字符“U”。由于这只是一个嫌疑犯,我不太确定该怎么办。我做错什么了吗?如何解决错误
更新
如果我是对的,而杰克逊试图逃离道路上的“U”,那么为什么会这样呢?我故意将路径放在引号中。那么为什么jackson认为斜杠是一种转义尝试?只是试图将反斜杠改为普通斜杠,结果成功了。有点奇怪,我被迫只使用一种类型的斜杠,但至少现在它可以工作了。澄清: 改变 进入
完成了任务 问题在于您问题中的原始JSON无效 根据,字符串的(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
如果我是对的,而杰克逊试图逃离道路上的“U”,那么为什么会这样呢 因为JSON规范说它必须这样做。问题在于您对JSON的理解,而不是Jackson的行为 如果要在JSON字符串中包含文字反斜杠,则需要将其转义。。。用反斜杠;e、 g
{"mergedFile" : "C:\\Users\\userName\\frobbit.pdf"}
我知道这有点晚了,但是有两次回击抛出了相同的错误 有4个反斜杠\\\\works 我在MySQL数据库中有这个记录
“{\'mergedFile\':\'C:\\\\Users\\\\userName\\\\frobbit.pdf\'”}“嗯,这并不奇怪<代码>\用于转义下一个字母/符号。所以
\U
可能会引起麻烦。要么将\
更改为/
(就像这里所做的那样),要么改用\
。奇怪的是,遇到这个问题时,您没有阅读JSON规范。(好的…没那么奇怪…非常常见的行为:-)只是尝试了双反斜杠->相同的异常。
string ::= ""
" chars "
chars ::= char
char chars
char ::= any-Unicode-character-except-"-or-\-or-control-character
\"
\\
\/
\b
\f
\n
\r
\t
\u four-hex-digits
{"mergedFile" : "C:\\Users\\userName\\frobbit.pdf"}