您的位置:首页 > Web前端 > JavaScript

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

2017-06-13 17:49 841 查看
  软件152尹以操

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

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


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

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


  错误信息是:

com.fasterxml.jackson.core.JsonParseException:Unexpectedcharacter('s'(code115)):wasexpectingdouble-quotetostartfieldname


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

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


  通过对比,发现上面的字符串和规范的json字符串主要有两个不同点,一个是字段名未用引号,第二个是使用了单引号。这都是不规范的Json格式写法。

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

解决:

com.fasterxml.jackson.databind.ObjectMappermapper=newcom.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还有其它的设置,有用到试试。


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐