java 返回前端忽略某个属性_返回前端页面的属性名称和实体类的名称不一致用@JsonProperty @SerializedName...

返回前端页面的属性名称和实体类的名称不一致用@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 注解文章中,基本用法如下:

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

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

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

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

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

再来看一个例子:

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

public class User {

@JsonProperty(value = “Name”)

private String name;

@JsonProperty(value = “Age”)

private int age;

}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值