解决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还有其它的设置,有用到试试。

 
时间: 2024-08-14 10:23:33

解决fasterxml中string字符串转对象json格式错误问题的相关文章

LigerUi-js中ajax前台调用后台Json格式转换!(已解决)

LigerUi-js中ajax前台调用后台Json格式转换!(已解决) success: function (data, status) { var aaa = JSON2.stringify(data); alert(aaa ); } LigerUi-js中ajax前台调用后台Json格式转换!(已解决),布布扣,bubuko.com

java中String字符串的替换函数:replace与replaceAll的区别

例如有如下x的字符串 String x = "[kllkklk\\kk\\kllkk]";要将里面的“kk”替换为++,可以使用两种方法得到相同的结果 replace(CharSequence target, CharSequence replacement)       ——          x.replace("kk", "++") replaceAll(String regex, String replacement)       —— 

校验字符串是否是JSON格式,将不规则展示的json格式的字符串进行规则展示(json格式化)

版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] [html] view plain copy var str = {"code": "","svcname": "","version": "","component": "","category": "","requestMs

JS中把字符串转成JSON对象的方法

在JS中,把 json 格式的字符串转成JSON对象,关键代码 json = eval('('+str+')'); <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml

javascript 中如何判断是否是JSON格式的字符串

var stringToJson = function(value){ try{ eval('('+value+')'); return angular.fromJson(value); } catch(er){ return value; } } 注: angular.fromJson(value); 为angularjs前端框架中的JSON格式字符串转JSON对象的方法,此处非完整方法,主要演示通过try捕捉eval异常判断传入参数是否为json格式字符串 用途: 将JSON字符串转为JSO

PHP中String字符串处理函数完整版

文章来源:PHP开发学习门户 地址:http://www.phpthinking.com/archives/602 开发习惯常用字符串处理函数梳理: strtr() 转换字符串中特定的字符. substr() 返回字符串的一部分. strstr() 搜索字符串在另一字符串中的首次出现(对大小写敏感) str_replace() 替换字符串中的一些字符.(对大小写敏感) strcmp() 比较两个字符串.(对大小写敏感) strlen() 返回字符串的长度. substr_count() 计算子串

解决.net中截取字符串的汉字与数字还有静态扩展方法

转载 http://blog.163.com/cn_dreamgo/blog/static/52679452200961033212407/ 这两天在C#编程中应用到C#代码与C的代码信息交互,但是在信息获取的过程发现当字符串中存在中文汉字时,两种代码下获取的字符串长度不相同.查找原因为:C#中使用的unicode编码格式,默认一个汉字为一个字符.例如:    str1 = "测试";在C#中使用str1.length的到的长度是2,在C中strlen()得到的长度是4:这样在字符长处

第八篇:使用字符串流对象进行格式转换

前言 字符串流对象有个很实用的功能就是格式转换.比如可以将整数类型的123转换成字符串格式的123,或者反过来.那么具体又是如何实现的?且看下文. 实现思路 对于整数转换成字符串格式,可设s是一个空的字符串流对象,” 整型变量 “存放目标整数.则当执行" s << 整型变量 "后,该整数将转成字符串格式并存进流中.随后代码中使用" s.str() "即可获取到该整数的字符串格式.对于字符串转换成整数格式,亦可设s是一个空的字符串流对象,” 整型变量 “存

MariaDB 10.0.X中,动态列支持 JSON 格式来获取数据。

MariaDB 10.0.X中,动态列(Dynamic Columns),可以支持 JSON 格式来获取数据. 为了兼容传统SQL语法,MariaDB 10和MySQL5.7支持原生JSON格式,即关系型数据库和文档型NoSQL数据库集于一身. 使用说明: ###表结构 create table assets (   item_name varchar(32) primary key, -- A common attribute for all items   dynamic_cols  blo