zoukankan      html  css  js  c++  java
  • 返回前端页面的属性名称和实体类的名称不一致用@JsonProperty @SerializedName

    场景:比如前端要求你返回一个json数据类型,但是这个json类型的里面属性有的值重复了,比如

    {
    name:zhangsan,
    age:12,
    teacher:[
    name:Mrs Liu
    subject:math
    ]
    }

    就像这样,出现了两个name,但是前端就是要求这样传的,很蛋疼有没有,都是name,时间长了就不知道啥意思了,所以,咱们有解决一下

    @JsonProperty("name")
    private String teacherName;

    在这篇文章中,我们将介绍如何将多个字段名称映射到一个字段属性上。如果你的应用有多个接口数据,那么使用 @SerializedName 注解就可以解决,你仍然可以使用原来的model类,而不必增加新的model类。

    @SerializedName 延伸

    在第一个 @SerializedName 注解文章中,基本用法如下:

    public class UserSimple {     
        

    给 Model 变量添加注解,并可以序列化和反序列化。

    但是,还不能满足我们的需求,SerializedName 接受两个参数,value、alternate,第一个value是默认参数,如果你只填了一个参数,那这个值将会赋值给 value,第二个 alternate 就为空,同样都填上也是ok的。

    public class UserSimpleSerializedName {      
          @SerializedName(value = "fullName", alternate = "username")    
          private String name;  
          private String email;
          private boolean isDeveloper;   
          private int age;
    }  
    

    SerializedName 改变了默认序列化和默认反序列化的字段取值,所以,如果你使用 Gson 将 Java model 类生称 JSON 串,结果就是 value 的名称就是字段的名称。

    alternate 属性是用在反序列化上的,也就是说从 JSON 到 Java 类的过程。Gson 会帮我们匹配 JSON 中的命名,并尝试找到一个字段映射。对于上面例子model类中,Gson 会将字段 fullname 或者 username 映射到字符串 name上。无论哪一个都会映射。

    如果在 model 中给变量使用了 @SerializedName 的两个属性,那么最终会返回相同的 Java 对象,例如:

    {    
      'fullName': 'Norman',   
     'email': 'norman@futurestud.io'
    }
    
    {    
        'username': 'Norman',   
        'email': 'norman@futurestud.io'
    }
    

    再来看一个例子:

       {
           'username': 'Norman',   
           'fullName': 'Marcus',   
           'email': 'norman@futurestud.io'
      }
    

    如果多个字段匹配一个变量字段,谁在后面Gson就会将值赋给谁,结果最终是 name:Marcus。




     

    public class User {  
          
        @JsonProperty(value = "Name")  
        private String name;  
          
        @JsonProperty(value = "Age")  
        private int age;  
    }  

  • 相关阅读:
    人人都是架构师:分布式系统架构落地与瓶颈突破
    Node.js区块链开发
    MDD:使用模型驱动开发方式进行快速开发(多图预警)
    MDSF:模型驱动开发(MDD)介绍 | 一群共同享有幸福生活的成长伙伴
    SLF4J with Logback in a Maven Project | Mograblog
    Spring MVC集成slf4j-logback
    SLF4J和Logback日志框架详解
    Python中国社区
    致远互联官网_致远软件_协同 _OA_OA系统_OA办公系统_协同管理软件及云服务领导供应商-致远软件官网
    新精英博客_公司博客_官方公告
  • 原文地址:https://www.cnblogs.com/xianz666/p/13297403.html
Copyright © 2011-2022 走看看