SpringBoot使用@JsonDeserialize和@JsonSerialize注解的功能简介说明
下文笔者讲述@JsonDeserialize和@JsonSerialize注解的功能简介说明
SpringMVC 在SpringMVC 在Controller中接受请求的数据或返回数据 我们需使用@JsonDeserialize和@JsonSerialize处理数据
@JsonDeserializer
public class ParamToStrDeserializer extends JsonDeserializer<String> { @Override public String deserialize( JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException { TreeNode treeNode = jsonParser.getCodec().readTree(jsonParser); if (treeNode instanceof IntNode) { return ((IntNode) treeNode).asText(); } else if (treeNode instanceof LongNode) { return ((LongNode) treeNode).asText(); } else if (treeNode instanceof ArrayNode) { //字符串数组,会多出两个引号,需要手动去除 return StringUtils.replace(StringUtils.join((ArrayNode) treeNode, ","), "\"", ""); } else if (treeNode instanceof TextNode) { return ((TextNode) treeNode).asText(); } return ""; } }
使用ParamToStrDeserializer的转化 无论传的值是数字 如:【88】或者【"88"】;还是数组 如【[10,20,30]】或者【["10","20","30"]】可统一转化为用逗号分隔的字符串格式 例: 在需要自动转化的字段上加上注解 @JsonDeserialize(using = ParamToStrDeserializer.class) private String args; 采用以上注解,则args会自动处理为相应格式
@JsonSerialize
@JsonSerialize的用法,@JsonDeserialize的反向用法。
public class MyJsonSerializer extends JsonSerializer<list<Integer>> { @Override public void serialize( List<Integer> stateList, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException { String join = StringUtils.join(stateList, ","); jsonGenerator.writeString(join); } } @JsonSerialize(using = MyJsonSerializer.class) private List<Integer> args; 采用以上方式,前端收到的字符串是一个逗号分隔的字符串
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。