Jackson序列化实例
参考文章
Jackson使用ContextualSerializer在序列化时获取字段注解的属性
使用BeanSerializerModifier定制jackson的自定义序列化(null值的处理)
关于使用ContextualSerializer的补充
BeanSerializerFactory中有如下代码,
关于设置SerializerModifier,如下
两种实现序列化的方式
方式1:自定义json serialize 实现ContextualSerializer接口
1. bo中自定义@ReferSerialTransfer注解
2. 自定义注解 ReferSerialTransfer.java
3. 自定义 json serialize实现
4. springmvc 配置文件中 converter的配置
<mvc:annotation-driven><mvc:message-converters register-defaults="true"><bean class="org.springframework.http.converter.StringHttpMessageConverter"><constructor-arg value="UTF-8" /><property name="writeAcceptCharset" value="false" /></bean><bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"><property name="prettyPrint" value="true" /></bean></mvc:message-converters> </mvc:annotation-driven>
方式2:设置MappingJackson2HttpMessageConverter 对应的SerializerFactory 的SerializerModifier
1.bo中serializer注解(JsonSerializer)
2. springmvc配置文件中的converter配置
<mvc:annotation-driven><mvc:message-converters register-defaults="true"><bean class="org.springframework.http.converter.StringHttpMessageConverter"><constructor-arg value="UTF-8" /><property name="writeAcceptCharset" value="false" /></bean><bean factory-bean="mappingJackson2HttpMessageConverterFactory" factory-method="init"class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"><property name="prettyPrint" value="true" /></bean></mvc:message-converters> </mvc:annotation-driven><bean id="mappingJackson2HttpMessageConverterFactory" class="com.hjz.refer.utils.MappingJackson2HttpMessageConverterFactory"/>
3. MappingJackson2HttpMessageConverterFactory.java
4. 自定义BeanSerializerModifier.java
Jackson序列化实例
是这样的一个场景, 人员person和用户user进行1对1关联时,一般是 person中维护着user的id,或user中维护着person的id。前端展示的时候需要展示人员以及关联用户的(code 和 name),最简单暴力的做法就是根据person id 拿到person对象,再根据person中的user id,拿到user对象,最后重新组装一下数据。
试想一下这个思路,项目启动时,把user的数据id <=> {id, code, name}同步到缓存中,在序列化 person 对象中 user id时做一点儿手脚,根据 user id 去缓存(如果缓存没有,则查询数据库)中拿到 对应的{id, code, name},并序列化该结果。从而达到了 id 转 {id, code, name}的效果。
写了一个测试工程,目录结构如下。
感兴趣的话请查看我的github。 参考源码
转载于:https://www.cnblogs.com/hujunzheng/p/6594320.html
Jackson序列化实例相关推荐
- SpringCloud采用Jackson序列化统一响应不正当的消息转换器导致的异常问题
SpringCloud采用Jackson序列化统一响应不正当的消息转换器导致的异常问题 环境说明 org.springframework.cloud.spring-cloud-dependencies ...
- java json 序列化对象空值不处理_jackson 实体转json 为NULL或者为空不参加序列化(实例讲解)...
使用jackson进行序列化时,往往会遇到后台某个实体对象的属性为null,当序列化成json时对应的属性也为null:这样在某些前端组件上应用该json对象会报错.(例如:echarts) 下面总结 ...
- 程序验证Jackson反序列化的规则、Jackson序列化与反序列化关键方法程序详细分析
目录 0. 为什么要做这个分析 1. Jackson反序列化时,无参构造.有参构造的执行顺序[附程序截图] 1.1 没有无参构造时: 1.2 无参构造和有参构造方法都有的时候先走无参构造: 2. Ja ...
- spring mvc3中JACKSON序列化日期格式的问题 - 墙头草的Java - BlogJava
spring mvc3中JACKSON序列化日期格式的问题 - 墙头草的Java - BlogJava在SPRING MVC3中,比如做REST时,经常要用JASON去解析,遇到了日期格式化的问题, ...
- Dubbo——Dubbo协议整合Jackson序列化解决方案
环境配置 spring boot 2.6.3 spring cloud 2021.0.1 spring cloud alibaba 2021.0.1.0 nacos server 2.0.4 dubb ...
- Jackson序列化和反序列化
1,下载Jackson工具包(jackson-core-2.2.3.jar jackson-annotations-2.2.3.jar jackson-databind-2.2.3.jar ) j ...
- 自定义jackson序列化_Jackson中的自定义反序列化程序和验证
自定义jackson序列化 tl; dr:将输入验证添加到Jackson中的自定义json解串器中很重要. 在RHQ中,我们在几个地方使用了Json解析-直接在as7 / Wildfly插件中,或者通 ...
- JAVA 序列化 Jackson_SpringBoot系列——Jackson序列化
前言 Spring Boot提供了与三个JSON映射库的集成: Gson Jackson JSON-B Jackson是首选的默认库. 官网介绍: 通常,我们将Java对象转成Json时称之为序列化, ...
- Effective Java之考虑用序列化代理代理序列化实例(七十八)
我们知道,实现了序列化的类.在反序列化时,实例的创建是由readObject方法来完成的.由于这是一个不同于构造函数的创建类实例的通道,因此在构造函数中的状态约束条件在readObjetc中也得一条不 ...
最新文章
- 淘宝网7年变化图--建议非美工UED人员也看看
- Effective Java:对于全部对象都通用的方法
- 决策树Decision Tree 及实现
- 前端学习(1187):双向数据绑定2
- 编码的奥秘:编码与组合
- 习题 3.10 有一函数:写一程序,输入x,输出y值。
- 计算机木材染色 配色技术的应用技术,计算机配色技术在木材连缸染色中的应用研究.pdf...
- Ubuntu18.04-使用wine打开CAJ文件并解决乱码问题
- 拉卡拉支付——综合普惠金融科技平台
- vscode远程连接服务器,编写python代码无法补全
- 异常:Activity has leaked window com.android.internal.policy.impl.PhoneWindow
- 抓取1688商品图片|文描|视频|规格|属性等信息 并打包下载
- python计算年龄的方法_巧算年龄-随心随性无为而为-51CTO博客
- js闭包的理解及应用场景
- Windows下的日志机制
- NYOJ--1237最大岛屿
- 孟丽秋教授当选为慕尼黑工业大学第一副校长
- Qt入门(一)——自己动动手写一个简易的用户化界面(Qt命令行模式)
- 小陈学linux第三节
- 糕头:二维火小程序初探