Java - @JsonProperty JSON 序列化/反序列化字段统一解决方案
2023-12-13 03:43:13
问题描述
最近遇到一个 JSON 序列化问题,因为在场景中需要转发一样的 Body 数据,但是因为当时考虑到反序列化对象可读性问题,所以将字段下划线转驼峰
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.cfg.SerializerFactoryConfig;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
/**
* @author Lux Sun
* @date 2023/7/28
*/
@Data
@Accessors(chain = true)
@Builder
@AllArgsConstructor
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class JtkOrderPushParam {
@JsonProperty("order_sn")
private String orderSn;
@JsonProperty("pub_id")
private Integer pubId;
private Integer timestamp;
}
那么,问题也就来了,当再想将该对象序列化的时候,发现字段名就很自然的是驼峰字段,但是我们预期目标是下划线(因为另一段程序一样的代码逻辑)
解决方案
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.cfg.SerializerFactoryConfig;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
/**
* @author Lux Sun
* @date 2023/7/28
*/
@Data
@Accessors(chain = true)
@Builder
@AllArgsConstructor
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class JtkOrderPushParamReverse {
@JsonProperty("orderSn")
private String order_sn;
@JsonProperty("pubId")
private Integer pub_id;
private Integer timestamp;
}
- 我们可以写一个『反转』字段的类,将原来的驼峰和下划线互换下,这样序列化的时候就是带下划线的字段咯~
文章来源:https://blog.csdn.net/Dream_Weave/article/details/134800268
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!