当前位置: 首页 > news >正文

解决JSON格式数据大小写问题,以及@JsonProperty 和@JSONField序列化的区别

1、@JsonProperty注解方式

@JsonProperty注解是annotation包下的一个注解,可以通过value属性定义注解修饰的属性名称,如果你用的是@JsonProperty注解,那么你千万不要用JSONObject.toJSONString(实体)去转json,可能很多人在这里就蒙蔽了,为什么网上复制过来的转换不了,实际上很多文章只是复制粘贴,根本没有实际执行过,JSONObject.toJSONString(实体)实际上是fastjson包里面的方法,他不会处理@JsonProperty上设置的“别名”。正确的写法是:ObjectMapper().writeValueAsString(实体类)。

2、@JSONField注解方式

另外一种方法就是用fastjson包提供的@JSONField(当然这个注解还有很多其他功能,比如格式化时间等,这里不做阐述)。如果用了此注解的属性(或者set方法),那就需要用JSONObject.toJSONString(实体)(或者JSONObject.toJSONString(实体))。

示例

public class SerializeTest {@JSONField(name = "gender")private String sex = "男";@JsonProperty(value = "name")private String userName = "张三";public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public SerializeTest() {}public static void main(String[] args) throws Exception{String string = new ObjectMapper().writeValueAsString(new SerializeTest());System.out.println(string);String jsonString = JSONObject.toJSONString(new SerializeTest());System.out.println(jsonString);}
}
-----------------------------------------------
-----------------------------------------------
运行结果:
JsonProperty序列化:{"sex":"男","name":"张三"}
JSONField序列化:{"gender":"男","userName":"张三"}

注意:spring框架的@RequestBody默认使用fasterxml中的converter方法将body中的json转换为对象 所以应该使用@JsonProperty注解。

http://www.dtcms.com/a/137646.html

相关文章:

  • TVS管与ESD保护二极管详解:原理、区别与应用选型
  • 广东广州一家IPO资产重组疑点重重,信息披露真实性存疑
  • 通过高斯分布概率密度函数寻找到数据中的异常点
  • TLS/SSL 弱密码套件中危漏洞修复
  • Security 权限控制的基本流程
  • 基于 Python 的 ROS2 应用开发全解析
  • 【扩散模型(十三)】Break-A-Scene 可控生成,原理与代码详解(中)Cross Attn Loss 代码篇
  • tcp和udp的数据传输过程以及区别
  • neakyThrows 是 Lombok 库中的一个注解
  • LeetCode Hot100 刷题笔记(10)—— ACM格式输入输出练习
  • 2025年文件加密软件的作用及其在现代社会中的重要性
  • 类的加载过程
  • Policy Gradient思想、REINFORCE算法,以及贪吃蛇小游戏(一)
  • SDK游戏盾如何接入?复杂吗?
  • RCL谐振电压增益曲线
  • 【树形dp题解】dfs的巧妙应用
  • SpringCloud企业级常用框架整合--下篇
  • 在 Linux 中判断当前网络类型与网卡类型的实用方法(内外网判断 + 网卡分类)
  • Function Calling是什么?
  • springboot + vue3项目部署到服务器上面(宝塔Linux面板)
  • 充电宝项目中集成地图地址解析功能梳理
  • [特殊字符] 大模型微调实战:通过 LoRA 微调修改模型自我认知 [特殊字符]✨
  • L2-013 红色警报
  • 【专题刷题】双指针(二)
  • 带你从入门到精通——知识图谱(六. 知识融合)
  • 半导体设备通信标准—secsgem v0.3.0版本使用说明文档(2)之GEM(SEMI 30)
  • 零基础上手Python数据分析 (15):DataFrame 数据排序与排名 - 快速定位关键数据
  • 【leetcode hot 100 136】只出现一次的数字
  • openlayer的基本使用(区域绘制、点线绘制、手动绘制轨迹)
  • 【LaTeX】Misplaced alignment tab character . ^^I