• SpringBoot使用@JsonDeserialize和@JsonSerialize注解的功能简介说明


    转自:

    SpringBoot使用@JsonDeserialize和@JsonSerialize注解的功能简介说明

    下文笔者讲述@JsonDeserialize和@JsonSerialize注解的功能简介说明

    SpringMVC
       在SpringMVC
       在Controller中接受请求的数据或返回数据
       我们需使用@JsonDeserialize和@JsonSerialize处理数据
    

    @JsonDeserializer

    public class ParamToStrDeserializer extends JsonDeserializer {
        @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> {
     
        @Override
        public void serialize(
                List stateList, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
            String join = StringUtils.join(stateList, ",");
            jsonGenerator.writeString(join);
     
        }
    }
    @JsonSerialize(using = MyJsonSerializer.class)
    private List args;
    采用以上方式,前端收到的字符串是一个逗号分隔的字符串
  • 相关阅读:
    11.24 - 每日一题 - 408
    webpack解析ol依赖的时候报错
    [0CTF 2016]piapiapia
    1704. 判断字符串的两半是否相似
    使用wkhtmltoimage实现生成长图分享
    电子企业MES管理系统实施的功能和流程有哪些
    C++基础:数据结构 代码模板
    成都榆熙:转化率的定义是什么?如何提升?
    QT静态成员函数访问和操作UI对象
    rabbitmq代码
  • 原文地址:https://blog.csdn.net/qq_25073223/article/details/127932189