Caused by: com.fasterxml.jackson.core.JsonParseException: Unexpected characterwas expecting double-q
最新推荐文章于 2023-08-18 14:44:27 发布
最新推荐文章于 2023-08-18 14:44:27 发布

解决fasterxml中string字符串转对象json格式错误问题。

springboot中jackson使用的包是fasterxml的。可以通过如下代码,将一个形如json格式string转为一个java对象:

com.fasterxml.jackson.databind.ObjectMapper mapper = new com.fasterxml.jackson.databind.ObjectMapper();
mapper.readValue(字符串, javabean.class);

但是,当我们要转的字符串是这种格式的就会报错,因为这种格式并不是规范的json格式:

{success:2,message:'认证已通过!设备未添加,请与和航联系。设备编号:1101'}

错误信息是:

com.fasterxml.jackson.core.JsonParseException: Unexpected character ('s' (code 115)): was expecting double-quote to start field name

意思就是:fasterxml期望字段名带有双引号,也就是期望是这样的:

{"success":2,"message":"认证已通过!设备未添加,请与和航联系。设备编号:1101"}

通过对比,发现上面的字符串和规范的json字符串主要有两个不同点

  1. 字段名未用引号
  2. 第二个是使用了单引号

这都是不规范的Json格式写法。
当然,最好的解决方式是将string字符串转成规范的json格式,但是由于某些原因,不得不使用这种格式怎么办呢?

com.fasterxml.jackson.databind.ObjectMapper mapper = new com.fasterxml.jackson.databind.ObjectMapper();
//允许使用未带引号的字段名
mapper.configure(Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
//允许使用单引号
mapper.configure(Feature.ALLOW_SINGLE_QUOTES, true);
mapper.readValue(字符串, javabean.class);

除了ALLOW_UNQUOTED_FIELD_NAMES,ALLOW_SINGLE_QUOTES还有其它的设置,有用到试试。

  • https://www.cnblogs.com/hyyq/p/7002614.html
但是Redis的配置文件是从网上拷贝过来的,使用的value反序列化是Jackson2JsonRedisSerializer类型,应该由于value字符串中含有逗号字符导致Jackson2JsonRedisSerializer反序列化失败,而对于我的项目把序列化类型改了就... 在本篇博客中,我们讨论了在Spring框架应用程序中解析JSON时出现的异常,并分析了异常信息及其原因。为了解决这个问题,我们提供了相应的解决方案,并介绍了如何避免类似问题的措施。同时,我们强烈建议升级至IDEA 2023或更新版本,以确保应用程序能够正确处理JSON数据,并避免类似的解析异常。通过遵循良好的JSON数据生成和验证实践,以及使用可靠的JSON库,您可以提升开发效率和代码质量,避免潜在的编码问题。另外,使用Postman的美化功能也可以帮助您在调试和测试阶段更轻松地处理JSON数据。 Caused by: com.fasterxml.jackson.core.JsonParseException: Unexpected character (' import com.entity.Province; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.gson.Gson; public class TestJson { public static void main(String[] args) { Optional Chaining 是 JavaScript 的一个新特性,它允许我们在尝试访问对象的属性之前检查对象是否存在。其他语言也有类似的东西,例如,C# 的 Null Conditional 操作符,与 Optional Chaining 非常类似。 JavaScript 中的长属性访问链很容易出错,因为它们中的任何一个都可能评估为null或undefined(也称为“空”值)。要在每个... 刚写过的接口,用Swagger做测试,结果后台报错如下: Caused by: com.fasterxml.jackson.core.JsonParseException: Unexpected character ('ï' (code 239)): was expecting comma to separa... Caused by: com.fasterxml.jackson.core.JsonParseException: Unexpected character ('}' (code 125)): was expecting double-quote to start field name 今天测试遇到以上的错误信息。 org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Unexpected character ('"' (code 34)): was expectin... 在用postman或者swagger进行测试时可能出现此 com.fasterxml.jackson.core.JsonParseException: Unexpected character (’}’ (code 125)): was expecting double-quote to start field name 主要原因是我们的写的请求内容格式错误,如图 这里末尾不应该加逗号,加上逗号后导致}符号出现错误的是识别,,所以去掉逗号即可。 Caused by: com.fasterxml.jackson.core.JsonParseException: Unexpected character ('c' (code 99)): was expecting double-quote to start field name 解决 Orabbix报错“received unexpected response ' ' for key 'archive' ” 该问题是因为 zabbix4.0及以上版本和 orabbix-1.2.3不兼容导致的。 需要重新编译Sender.java进去。 我这里已经准备好了编译过的jar包。将下载好的jar重命名为 orabbix-1.2.3.jar后 直接用这个jar包去替换原始jar包即可。替换完成后重启orabbix。 富文本编辑器报错Caused by: com.fasterxml.jackson.core.JsonParseException: Unexpected character ('/' (code 47)): maybe a (non-standard) comment? (not recognized as one since Feature 'ALLOW_COMMENTS' not enabled for parser)的解决方案 com.fasterxml.jackson.core.JsonParseException: 意外的字符 (i (code 105)): 期望双引号来开始字段名。 这个错误消息表明在解析 JSON 文本时遇到了意外的字符 "i"。这通常是因为 JSON 文本中的字段名应该用双引号引起来,但在解析时遇到了其他字符。 例如,以下 JSON 文本会导致这个错误: i_am_a_field:"fi...