解析JSON字符串报错:com.fasterxml.jackson.core.JsonParseException: Unexpected character (‘‘‘ (code 39)): was

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); 
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: com.fasterxml.jackson.core.JsonParseException: 意外的字符 (i (code 105)): 期望双引号来开始字段名。 这个错误消息表明在解析 JSON 文本时遇到了意外的字符 "i"。这通常是因为 JSON 文本中的字段名应该用双引号引起来,但在解析时遇到了其他字符。 例如,以下 JSON 文本会导致这个错误: ``` { i_am_a_field: "field value" } ``` 正确的 JSON 应该是这样的: ``` { "i_am_a_field": "field value" } ``` 可能是 JSON 文本中存在语法错误,或者是在生成 JSON 文本时没有正确地使用双引号引起字段名。 ### 回答2: com.fasterxml.jackson.core.JsonParseException: Unexpected character ('i' (code 105)): was expecting double-quote to start field name 是一个Jackson库的JsonParseException异常的错误信息。 这个错误通常在解析JSON字符串时出现,出现这个错误的原因是在JSON对象中,字段名没有用双引号包围。按照JSON规范,字段名必须用双引号括起来。 要解决这个问题,可以在出错的地方找到缺少双引号的字段名,然后用双引号包围起来即可。 例如,如果原本的JSON字符串是: { name: "John", age: 25 } 在这个例子中,name字段和age字段的字段名没有被双引号包围,就会引发这个错误。应该将它改为: { "name": "John", "age": 25 } 这样就解决了这个错误。确保所有的字段名都被双引号包围,遵循JSON的规范即可避免这个异常。 ### 回答3: 这个错误是由于使用Jackson解析JSON时出现了问题。通常情况下,这个错误是由于JSON格式不正确导致的。 错误消息中提到了一个意外的字符'i',并期望遇到双引号以开始字段名。这意味着在JSON中遇到了一个不合法的字符或语法错误。 解决这个问题的方法是检查JSON数据,确保其符合JSON语法规则。JSON应该以花括号({})或方括号([])开始和结束,并且键和值之间应该使用双引号括起来。 如果JSON数据是通过编程方式生成的,需要仔细检查代码逻辑,确认在生成JSON时没有错误。 如果JSON数据是从外部获取的,比如网络请求或文件读取,需要检查JSON数据的来源并确认其格式正确。 此外,还可以使用一些在线JSON验证工具来验证JSON数据的格式是否正确。 总之,解决这个问题的关键是确保JSON数据符合正确的格式和语法规则。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雾林小妖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值