使用 @JsonProperty处理大写开头的内容出现多出一个字段

 

使用 @JsonProperty处理大写开头的内容出现多出一个字段

目录

现象:

引用:

类:

测试:

原因:

解决方法:

处理方式1:首字母改成小写的

处理方式2:使用get

处理方式3:使用@JsonAutoDetect(getterVisibility=JsonAutoDetect.Visibility.NONE)

总结:


 

现象:

获取的数据是大写开头的,使用 @JsonProperty 出现多出一个字段

 

 

 

 

 

引用:

// Fastjson:

<dependency>
   <groupId>com.fasterxml.jackson.core</groupId>
   <artifactId>jackson-core</artifactId>
   <version>2.10.2</version>
</dependency>
<dependency>
   <groupId>com.fasterxml.jackson.core</groupId>
   <artifactId>jackson-annotations</artifactId>
   <version>2.10.2</version>
</dependency>
<dependency>
   <groupId>com.fasterxml.jackson.core</groupId>
   <artifactId>jackson-databind</artifactId>
   <version>2.10.2</version>
</dependency>



// Swagger:



<dependency>

   <groupId>io.springfox</groupId>

   <artifactId>springfox-swagger-ui</artifactId>

   <version>2.9.2</version>

</dependency>

<dependency>

   <groupId>io.springfox</groupId>

   <artifactId>springfox-swagger2</artifactId>

   <version>2.9.2</version>

</dependency>

<dependency>

   <groupId>com.github.xiaoymin</groupId>

   <artifactId>swagger-bootstrap-ui</artifactId>

   <version>1.9.6</version>

</dependency>

 

 

类:

 
@Data

@JsonIgnoreProperties(ignoreUnknown = true)

@ApiModel("IMSI-IME绑定信息查询的详情")

public class CardStatusdDetail {

   @ApiModelProperty("IMEI")

   @JsonProperty("IMEI")

   private String IMEI;

   @ApiModelProperty("设备IMSI")

   @JsonProperty("IMSI")

   private String IMSI;

   @ApiModelProperty("bingdingType 绑定的类型")

   @JsonProperty("BingdingType")

   private String BingdingType;

   @ApiModelProperty("bingdingStatus 绑定的状态")

   @JsonProperty("BingdingStatus")

   private String BingdingStatus;

   @ApiModelProperty("deviceType 设备类型")

   @JsonProperty("DeviceType")

   private String DeviceType;



}

 

 

测试:

 

@PostMapping("/queryBingDingStatusDetailTest")

@ApiOperation("queryBingDingStatusDetailTest")

public CardStatusdDetail queryBingDingStatusDetailTest(){

    String json = "{\"IMSI\":\"46011338941\",\"IMEI\":\"863119031909662\",\"BingdingType\":\"开通\",\"BingdingStatus\":\"是,匹配成功\",\"DeviceType\":\" Smartphone终端信号(Che1-CL1023) \"}";

    try {

        ObjectMapper mapper = new ObjectMapper();

        CardStatusdDetail cardStatusdDetail = mapper.readValue(json, new TypeReference<CardStatusdDetail>() {

        });



        System.out.println(cardStatusdDetail.toString());

        return cardStatusdDetail;

    } catch (IOException e) {

        e.printStackTrace();

    }

    return null;

}
 

 

原因:

 

jackson2对pojo类型序列化的处理。在get处理的时候,会生成一个小写的

 

 

 

解决方法:

 

处理方式1:首字母改成小写的

 

因为值对应的@JsonProperty("BingdingType") 里面的内容,在属性设置的时候,把首字母改成小写的 
 比如:private String bingdingType;

 

代码:

 

@Data

@JsonIgnoreProperties(ignoreUnknown = true)

@ApiModel("绑定信息查询的详情")

public class CardStatusdDetail {

   @ApiModelProperty("IMEI")

   @JsonProperty("IMEI")

   private String imei;

   @ApiModelProperty("设备IMSI")

   @JsonProperty("IMSI")

   private String imsi;

   @ApiModelProperty("bingdingType 绑定的类型")

   @JsonProperty("BingdingType")

   private String bingdingType;

   @ApiModelProperty("bingdingStatus 绑定的状态")

   @JsonProperty("BingdingStatus")

   private String bingdingStatus;

   @ApiModelProperty("deviceType 设备类型")

   @JsonProperty("DeviceType")

   private String deviceType; 

}

 

返回值的响应:

 

处理方式2:使用get

 

手动编写get方法,注解加到方法上。

 

代码:

@Data

@JsonIgnoreProperties(ignoreUnknown = true)

@ApiModel("IMSI-IME绑定信息查询的详情")

public class CardStatusdDetail {

   @ApiModelProperty("IMEI")

   private String IMEI;

   @ApiModelProperty("设备IMSI")

   private String IMSI;

   @ApiModelProperty("bingdingType 绑定的类型")

   private String BingdingType;

   @ApiModelProperty("bingdingStatus 绑定的状态")

   private String BingdingStatus;

   @ApiModelProperty("deviceType 设备类型")

   private String DeviceType;



   @JsonProperty("IMEI")

   public String getIMEI() {

      return IMEI;

   }



   @JsonProperty("IMSI")

   public String getIMSI() {

      return IMSI;

   }



   @JsonProperty("BingdingType")

   public String getBingdingType() {

      return BingdingType;

   }



   @JsonProperty("BingdingStatus")

   public String getBingdingStatus() {

      return BingdingStatus;

   }



   @JsonProperty("DeviceType")

   public String getDeviceType() {

      return DeviceType;

   }

}

 

返回值的响应:

 

 

 

处理方式3:使用@JsonAutoDetect(getterVisibility=JsonAutoDetect.Visibility.NONE)

 

代码:

 

@Data

@JsonIgnoreProperties(ignoreUnknown = true)

@ApiModel("IMSI-IME绑定信息查询的详情")

@JsonAutoDetect(getterVisibility=JsonAutoDetect.Visibility.NONE)

public class CardStatusdDetail {

   @ApiModelProperty("IMEI")

   @JsonProperty("IMEI")

   private String IMEI;

   @ApiModelProperty("设备IMSI")

   @JsonProperty("IMSI")

   private String IMSI;

   @ApiModelProperty("bingdingType 绑定的类型")

   @JsonProperty("BingdingType")

   private String BingdingType;

   @ApiModelProperty("bingdingStatus 绑定的状态")

   @JsonProperty("BingdingStatus")

   private String BingdingStatus;

   @ApiModelProperty("deviceType 设备类型")

   @JsonProperty("DeviceType")

   private String DeviceType;



}

 

返回值的响应:

 

方法总结: 以上方法使用第一种方式比较直接,直接应该get导致返回一个小写开头的。第三种方式会直接相对应,第二种会繁琐些

 

 

总结:

    使用@JsonProperty("属性名") 主要是根据属性名相对应的,取回来的值大写的时候需要注意下,小写就不会冲突了。
 

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天狼1222

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值