zoukankan      html  css  js  c++  java
  • 解决fasterxml中string字符串转对象json格式错误问题

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

     
  • 相关阅读:
    1254:走出迷宫
    1332:【例2-1】周末舞会
    P1744 采购特价商品 题解(讲解图论)
    p1305 新二叉树
    P1069 细胞分裂
    LOJ #124. 除数函数求和 1
    P4438 [HNOI/AHOI2018]道路
    P4318 完全平方数
    P1447 [NOI2010]能量采集
    P3200 [HNOI2009]有趣的数列
  • 原文地址:https://www.cnblogs.com/hyyq/p/7002614.html
Copyright © 2011-2022 走看看