自定义反序列化过程

news/2024/11/16 5:35:12/

需求:student对象中name属性,序列化时将该属性映射为stuname,反序列化时将 Json中的NAME键值对映射到name属性中

java">   @AllArgsConstructor@NoArgsConstructor@Getter@Setterstatic class Student {@JsonProperty("stuname")private List<String> name;@JsonProperty("age")private String age;@Overridepublic String toString() {return "Student{" +"name=" + name +", age='" + age + '\'' +'}';}}
java">public class StudentDeserializer extends JsonDeserializer<Student> {@Overridepublic Student deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {// 自定义反序列化逻辑Student student = new Student();JsonNode node = p.getCodec().readTree(p);JsonNode namesNode = node.get("NAMES");ObjectMapper objectMapper = new ObjectMapper();List<String> names = objectMapper.convertValue(namesNode, objectMapper.getTypeFactory().constructCollectionType(List.class, String.class));JsonNode ageNode = node.get("age");String age = objectMapper.convertValue(ageNode, String.class);student.setName(names);student.setAge(age);return student;}
java">  @Testpublic void stuTest() throws IOException {ObjectMapper mapper = new ObjectMapper();// 创建一个Student对象并序列化为JSONStudent student = new Student();student.setName(Arrays.asList("John Doe", "Jane Doe"));student.setAge("1");String jsonString = mapper.writeValueAsString(student);System.out.println("Serialized JSON: " + jsonString);// 反序列化JSON字符串为Student对象// 注意这里的JSON字符串中NAMES是一个数组String inputJson = "{\"NAMES\":[\"Alice\", \"Bob\"],\"age\":\"15\"}";// 在 ObjectMapper 上注册反序列化器SimpleModule module = new SimpleModule();module.addDeserializer(Student.class, new StudentDeserializer());mapper.registerModule(module);Student deserializedStudent = mapper.readValue(inputJson, Student.class);System.out.println("Deserialized Student: " + deserializedStudent);}


http://www.ppmy.cn/news/1547363.html

相关文章

分布式----Ceph部署

目录 一、存储基础 1.1 单机存储设备 1.2 单机存储的问题 1.3 商业存储解决方案 1.4 分布式存储&#xff08;软件定义的存储 SDS&#xff09; 1.5 分布式存储的类型 二、Ceph 简介 三、Ceph 优势 四、Ceph 架构 五、Ceph 核心组件 #Pool中数据保存方式支持两种类型&…

大数据新视界 -- 大数据大厂之 Impala 性能优化:优化数据加载的实战技巧(下)(16/30)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

NAT网络工作原理和NAT类型

NAT基本工作流程 通常情况下&#xff0c;某个局域网中&#xff0c;只有路由器的ip是公网的&#xff0c;局域网中的设备都是内网ip&#xff0c;内网ip不具备直接与外部应用通信的能力。 处于内网的设备如何借助NAT来实现访问外网的应用&#xff1f; 对于开启了NAT功能的局域网…

C++内存池实现

1.内存池概念 内存池就和其他的池数据&#xff08;如线程池&#xff09;结构类似&#xff0c;由程序维护一个“池”结构来管理程序使用的内存&#xff0c;然后根据需要从内存池中申请使用内存或者向内存池中释放内存&#xff0c;来达到高效管理内存的目的。 在一般的内存管理的…

Java学习Day60:回家!(ElasticStatic)

1.what is ElasticStatic The Elastic Stack, 包括 Elasticsearch、 Kibana、 Beats 和 Logstash&#xff08;也称为 ELK Stack&#xff09;。能够安全可靠地获取任何来源、任何格式的数据&#xff0c;然后实时地对数据进行搜索、分析和可视化。 Elaticsearch&#xff0c;简称…

XML Schema 字符串数据类型

XML Schema 字符串数据类型 1. 概述 XML Schema 是一种用于定义 XML 文档结构和内容的语言。它提供了一种强大的机制来描述 XML 数据的类型、结构和约束。在 XML Schema 中&#xff0c;字符串数据类型是一种基本数据类型&#xff0c;用于表示文本数据。 2. 字符串数据类型 …

【大语言模型】ACL2024论文-10 CSCD-IME: 纠正拼音输入法产生的拼写错误

【大语言模型】ACL2024论文-10 CSCD-IME: 纠正拼音输入法产生的拼写错误 目录 文章目录 【大语言模型】ACL2024论文-10 CSCD-IME: 纠正拼音输入法产生的拼写错误目录摘要研究背景问题与挑战如何解决创新点算法模型1. 错误检测模型2. 伪数据生成模块3. n-gram语言模型过滤4. 多任…

mysql 配置文件 my.cnf 增加 lower_case_table_names = 1 服务启动不了的原因

原因&#xff1a;在MySQL8.0之后的版本&#xff0c;只允许在数据库初始化时指定&#xff0c;之后不允许修改了 mysql 配置文件 my.cnf 增加 lower_case_table_names 1 服务启动不了 报错信息&#xff1a;Job for mysqld.service failed because the control process exited …