我在数据库中有一个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字符串,但有些时候会出现上述错误。为什么出现这种意外结果?
答案 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", "");