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?! ?span style="font-size:14pt;color:#3366ff;">參考源碼
轉載于:https://www.cnblogs.com/hujunzheng/p/6594320.html
總結
以上是生活随笔為你收集整理的Jackson序列化实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何买到适合自己的房子?
- 下一篇: 家里装修想选款木纹岩板,大家觉得蒙&am