Java实体类如何映射到json数据(驼峰映射到json中的下划线)

由于经常需要接收前端的json数据,而json数据一般都是使用下划线命名的。后端又不太建议使用map接收,所以就需要用到使用自定义类来接收(如果参数过少,可以考虑使用内部类,将所有参数类写到一个大类中)

使用@JsonProperty或@JsonAlias

@JsonProperty 直接定义成别名
@JsonAlias添加别名的意思
例如:

@Data
public class MyRequestParam {

 @Data
 public static class TestParam {

   // @JsonAlias("host_ip")
   @JsonProperty("host_ip")
   private boolean hostIp;

   }
}

使用@RequestBody MyRequestParam.TestParam flag来接收json参数时候,只能接收到host_ip的值(使用true测试,因为boolean值没有=false),使用testFlag作为json字段的键是接收不到的。

而注解@JsonAlias(“host_ip”)是hostIp和host_ip做键都可以接收到。

返回json数据时候,也即使用对象或者result类中的object类型返回对象数据时候:

@JsonProperty也会起作用
@JsonAlias只会在接收时候起到起小名的作用。
注:使用@JsonProperty时候,如果使用fastjson工具类进行处理,比如:

JSON.toJSONString(obj);
JSONObject.toJSONString(obj);
出来的结果依旧是testFlag。

当然fastjson对于这种情况也给出了一个注解,那就是@JSONField(name = “host_ip”),在属性上面添加注解,在使用json工具时候也可以对应转成想要的字段名了。

总结:

@JsonProperty 在接收前端和返回给前端字段时候起作用且只能使用定义的别名
@JsonAlias 只在接收前端数据数据时候起作用且本身名字和定义的别名都可以使用。
@JSONField(name = “name”) 当需要使用json工具类进行转json字符串时候起作用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值