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

@JsonProperty 踩坑

@JsonProperty 在fastjson 和 hutooljson 中是不会生效的。

在 fastjson 中,对应的注解是 @JSONField。如果你正在使用 fastjson 进行 JSON 的序列化和反序列化,并且想要改变字段的 JSON 属性名,你应该使用 @JSONField 注解,而不是 @JsonProperty。

public class User {@JSONField(name = "email")private String userEmail;// getter 和 setter 方法
}

hutooljson  是没有指定的。

Jackson 的方法基本都会抛出异常,自己注意处理异常。

@JsonProperty 是 Jackson 库中的一个注解,它用于在 Java 对象和 JSON 之间进行序列化(将 Java 对象转换为 JSON)和反序列化(将 JSON 转换为 Java 对象)时指定字段的 JSON 属性名。当你使用 Jackson 进行 JSON 处理时,这个注解就会生效。

下面是如何使用 @JsonProperty 注解的一些关键点:

  1. 添加依赖:确保你的项目中包含了 Jackson 库的依赖。如果你使用 Maven,可以在 pom.xml 文件中添加如下依赖:
xml<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.0</version> <!-- 请检查并使用最新版本 -->
</dependency>
  1. 使用 @JsonProperty:在你的 Java 类中,为需要特殊处理的字段添加 @JsonProperty 注解。例如,你可能有一个 Java 字段名为 userEmail,但你想在 JSON 中将其表示为 email
javapublic class User {
@JsonProperty("email")
private String userEmail;// getter 和 setter 方法
public String getUserEmail() {
return userEmail;
}public void setUserEmail(String userEmail) {
this.userEmail = userEmail;
}
}
  1. 序列化:当你使用 Jackson 的 ObjectMapper 类将 User 对象转换为 JSON 字符串时,@JsonProperty 注解就会生效。例如:
javaObjectMapper mapper = new ObjectMapper();
User user = new User();
user.setUserEmail("example@example.com");
String json = mapper.writeValueAsString(user);
System.out.println(json); // 输出:{"email":"example@example.com"}
  1. 反序列化:同样,当你使用 ObjectMapper 类将 JSON 字符串转换为 User 对象时,@JsonProperty 注解也会帮助 Jackson 正确地将 JSON 属性映射到 Java 字段。

总之,只要你的项目中包含了 Jackson 库的依赖,并且你正确地使用了 @JsonProperty 注解,那么它就应该能够生效。

jackson 中转 JavaList

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;import java.io.IOException;
import java.util.List;public class JsonToListExample {public static void main(String[] args) {ObjectMapper objectMapper = new ObjectMapper();String json = "[{\"id\":1,\"name\":\"Item1\"},{\"id\":2,\"name\":\"Item2\"}]";try {TypeReference<List<Item>> typeRef = new TypeReference<List<Item>>() {};List<Item> items = objectMapper.readValue(json, typeRef);items.forEach(item -> System.out.println(item.getName()));} catch (IOException e) {e.printStackTrace();}}
}class Item {private int id;private String name;// Getters and Setters...public String getName() {return name;}
}

http://www.lryc.cn/news/404944.html

相关文章:

  • 业务架构、数据架构、应用架构和技术架构分析
  • android studio中svn的使用
  • 敏捷CSM认证:精通敏捷Scum估算方法,高效完成项目!
  • 三、建造者模式
  • MySQL-----索引
  • Webpack 5 Tree Shaking与Module Federation
  • 免费分享一套微信小程序图书馆座位预约管理系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】,帅呆了~~
  • k8s入门:从安装到实际应用
  • 基于Qt的上位机通用框架
  • Vulnhub靶场DC-7练习
  • 吴恩达深度学习笔记1 Neural Networks and Deep Learning
  • (十)Spring教程——Spring配置概述
  • 飞书群聊机器人自定义机器人接入,并实现艾特@群成员功能
  • CrowdStrike更新致850万Windows设备宕机,微软紧急救火!
  • 银行黄金交易流程
  • MATLAB实验五:MATLAB数据分析
  • Cannot perform upm operation: connect ETIMEDOUT 34.36.199.114:443 [NotFound]
  • Docusaurus VS VuePress:哪一个更适合你的技术文档?
  • 昇思25天学习打卡营第25天|MindNLP ChatGLM-6B StreamChat
  • 海康威视综合安防管理平台 detection 前台RCE漏洞复现
  • 【BUG】已解决:ModuleNotFoundError: No module named ‘PIL‘
  • css font 优化
  • Go之Web急速入门Gin+Gorm框架
  • 【MySQL进阶之路 | 高级篇】ER模型
  • C++基础语法:STL之容器(4)--序列容器中的list(一)
  • WordPress杂技
  • 鸿蒙 动态共享包HSP的创建和引用
  • ARM架构(二)—— arm v7-a/v8/v9寄存器介绍
  • C++合作开发项目:美术馆1.0
  • QT 5 同时使用Q_DECLARE_METATYPE(pointdata) 和继承 QObjectUserData