解决fasterxml中string字符串转对象json格式错误问题
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决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字符串主要有两个不同点,一个是字段名未用引号,第二个是使用了单引号。这都是不规范的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还有其它的设置,有用到试试。
以上是关于解决fasterxml中string字符串转对象json格式错误问题的主要内容,如果未能解决你的问题,请参考以下文章
出错了:java.lang.string can not cast to org 手机出现这,
jackson简单使用,对象转json,json转对象,json转list