在json字符串转object类型的时候,报的错。
Unexpected character (“我得明天“,““(code 31070 / 0x795e))
Exception while XX方法 Unexpected character ('神' (code 31070 / 0x795e)): was expecting comma to separate Object entries
at [Source:
看到json 字符串中出现了特殊字符“"”(英文的双引号)。
先转换成中文的双引号,然后去转换成object对象,后再replace成英文的双引号,借鉴了网上的方法。
public String toJsonStr(String s) {
char[] tempArr = s.toCharArray();
int tempLength = tempArr.length;
for (int i = 0; i < tempLength; i++) {
if (tempArr[i] == ':' && tempArr[i + 1] == '"') {
for (int j = i + 2; j < tempLength; j++) {
if (tempArr[j] == '"') {
if (tempArr[j + 1] != ',' && tempArr[j + 1] != '}') {
tempArr[j] = '”'; // 将value中的 双引号替换为中文双引号
} else if (tempArr[j + 1] == ',' || tempArr[j + 1] == '}') {
break;
}
}
}
}
}
return new String(tempArr);
}
String temp = "aaaa"d"cc";
String str= temp .replace('”','"');
因为没有好的捕获机制,才出现这个错,顺便加上trycatch捕获这个异常,
用e.printStackTrace(); 先把异常抛出来
com.fasterxml.jackson.core.JsonParseException: Unexpected character ('我' (code 31070 / 0x795e)): was expecting comma to separate Object entries
try {
return true;
}catch (JsonParseException ex){
//去转换成中文的双引号,然后转换完object对象,再replace成英文的双引号
} catch (JsonProcessingException e) {
return false;
}