springMVC反序列化时修改指定属性的序列化方式

现在又这么一个情况,调第三方接口时返回的json数据中有一个类型是boolean类型的,我要用int去接收,这个时候就会报错、、、

不要问我为啥用int接收,不想改之前的代码了。。

代码贴上:

实体类:

public class TspCysTransportM {

  
  /**
   * 是否是多线路,1是 0不是
   */
//  @JsonSerialize(using = BoolIntJsonSerializer.class)
  @JsonDeserialize(using = BoolIntJsonSerializer.class)
  private Integer ifMoreLine;

}

好,其他属性没啥用就去调了

@JsonDeserialize:反序列化使用,可以使用到字段上

@JsonSerialize:序列化使用

本文主要讲的是反序列化的使用

public class BoolIntJsonSerializer extends JsonDeserializer {

  /**
   * @param p Parsed used for reading JSON content
   * @param ctxt Context that can be used to access information about this deserialization
   * activity.
   * @return Deserialized value
   */
  @Override
  public Object deserialize(JsonParser p, DeserializationContext ctxt)
      throws IOException, JsonProcessingException {
    if (p.getCurrentToken() == JsonToken.START_OBJECT) {
      p.nextToken();
    }
    JsonToken t = p.getCurrentToken();
    if (t == JsonToken.VALUE_FALSE) {

      return 0;
    }
    if (t == JsonToken.VALUE_TRUE) {
      return 1;
    }
    return p.getValueAsInt();
  }
}

controller层:

@PostMapping("/a")
public R getLongitude1() {
  HashMap objectObjectHashMap = Maps.newHashMap();
  return logplatClientService.getTspMissionM(objectObjectHashMap);
}

 

好的这样ok解决问题,不用修改其他代码了。

 

你可能感兴趣的:(springmvc)