org.codehaus.jackson.JsonParseException:意外字符(' '(代码65533 / 0xfffd))

时间:2015-06-05 07:21:42

标签: java json jackson mapper

我在数据库中有一个Json字符串,但在Java对象中进行转换时,会出现以下错误:

  

引起:org.codehaus.jackson.JsonParseException:意外字符(' '(代码65533 / 0xfffd)):预期有效值(数字,字符串,数组,对象,'true','false'或'空')

Json是:{"crt":"wrd","name":"7|6A TTTM"}

在java代码中,我已对其进行了配置,并将其设为私有(不是静态最终版)

objectMapper= new ObjectMapper();
objectMapper.configure(DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);

注意:有时会在Object中转换Json字符串,但有些时候会出现上述错误。为什么出现这种意外结果?

3 个答案:

答案 0 :(得分:3)

简答题解决方案:使用方法删除第一次出现的额外添加的BOM文本,如下所示,应解决此问题:

public String cleanUpJsonBOM(String json) {
      return json.trim().replaceFirst("\ufeff", "");
  }

我有一个类似的问题,我在 smoothingTimeConstant on Mozilla Developer Network 中记录了这个问题。 希望这有帮助!

答案 1 :(得分:1)

某些东西产生无效的UTF-8序列(或UTF-8与ISO-8859-1等单字节编码的不匹配),Jackson检测到这种编码问题。它与ACCEPT_SINGLE_VALUE_AS_ARRAY设置无关,因为例外来自低级JsonParser

因此,您需要弄清楚为什么要解析的JSON内容已损坏。

答案 2 :(得分:1)

这对我有用。

String formattedString = yourString.trim().replaceAll("\uFFFD", "");