1、报错信息
com.fasterxml.jackson.core.JsonParseException: Unexpected character (''' (code 39)): was expecting double-quote to start field name
at [Source: (String)"{'stu_id':'1001','stu_name':'晓春'}"; line: 1, column: 3]
at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:2391) ~[jackson-core-2.13.5.jar:2.13.5]
2、问题描述
我的JSON字符串样式:生成的JSON字符串是单引号的,不是双引号
使用ObjectMapper的readValue反序列化的时候,报错。这是因为ObjectMapper默认不支持解析单引号的json字符串,错误代码如下
@RequestMapping("/commonQuestion7")
@ResponseBody
public void commonQuestion7() throws Exception{
ObjectMapper mapper = new ObjectMapper();
String param="{'stu_id':'1001','stu_name':'晓春'}";
//将字符串转换为对象
Student stu=mapper.readValue(param,Student.class);
}
3、解决办法
通过配置告诉ObjectMapper,单引号可解析
配置代码:mapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);
正确代码如下
@RequestMapping("/commonQuestion7")
@ResponseBody
public void commonQuestion7() throws Exception{
ObjectMapper mapper = new ObjectMapper();
mapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);
String param="{'stu_id':'1001','stu_name':'晓春'}";
//将字符串转换为对象
Student stu=mapper.readValue(param,Student.class);
}