解决fasterxml中string字符串转对象json格式错误问题
2024-08-25 10:21:04
软件152 尹以操
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字符串主要有两个不同点,一个是字段名未用引号,第二个是使用了单引号。这都是不规范的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还有其它的设置,有用到试试。
最新文章
- **SQL某一表中重复某一字段重复记录查询与处理
- sqlserver row_number 类似 mysql中 limit 用法
- CSS transition 过渡 详解
- TCP/IP 中文译名为传输控制协议/因特网互联协议,又叫网络通讯协议
- 怎样用LINQ或EF生成NOT IN和IN语句
- win10 uwp 绑定静态属性
- Progressive Web Applications
- app后端设计(6)-- LBS
- 【1】MySQL大数据量分页查询方法及其优化
- jQuery插件整理
- idea集成maven
- Python pickle模块
- C语言程序内存的分区
- Python3解《剑指》问题:“遇到奇数移至最前,遇到偶数移至最后”
- shell中test命令方法详解
- Postman无法正常启动解决办法
- 浅析人脸检测之Haar分类器方法:Haar特征、积分图、 AdaBoost 、级联
- docker 17.09.0-ce 启动更换网络地址
- Java并发性和多线程介绍目录
- android TCP 和 UDP总结(转)