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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/531266.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/531266.shtml
英文地址,請注明出處:http://en.pswp.cn/news/531266.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

maven自定義腳手架(快速生成項目)

Maven之自定義archetype生成項目骨架 利用腳手架生成 新項目 命令行方式 mvn archetype:generate \ -DarchetypeGroupIdcom.xxx \ -DarchetypeArtifactIdarchetype-spring-boot \ -DarchetypeVersion1.0.0 \ -DgroupIdcom.xxx \ -DartifactIddemo-archetype-generate \ -Dversi…

JSONObject 自定義過濾配置

一、自定義過濾器說明 PropertyPreFilter 根據PropertyName判斷是否序列化   PropertyFilter 根據PropertyName和PropertyValue來判斷是否序列化   NameFilter 修改Key&#xff0c;如果需要修改Key,process返回值則可   ValueFilter 修改Value   BeforeFilter 序列化時…

springmvc防止重復提交攔截器

一、攔截器實現&#xff0c;ResubmitInterceptorHandler.java import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.handler.Hand…

Mac idea 快捷鍵

Mac鍵盤符號和修飾鍵說明 ? Command? Shift? Option? Control?? Return/Enter? Delete? 向前刪除鍵&#xff08;FnDelete&#xff09;↑ 上箭頭↓ 下箭頭← 左箭頭→ 右箭頭? Page Up&#xff08;Fn↑&#xff09;? Page Down&#xff08;Fn↓&#xff09;Home Fn ←…

cas4.2.7實現單點登錄

準備前參考&#xff1a;  cas server下載地址 cas client 下載地址 安全cookie setSecure詳解 Spring通過構造方法注入的四種方式 cas 學習博文 自定義登錄頁和登錄認證 cas server端的login-webflow詳細流程 CAS服務端自定義數據庫認證用戶 準備工作 1. cas server下載之后解…

log4j之log4j2.xml使用

依賴jar包 log4j-api-2.6.2.jar log4j-core-2.6.2.jar log4j-slf4j-impl-2.6.2.jar slf4j-api-1.7.12.jar 在resources目錄下新建log4j2.xml&#xff0c;內容如下。 <?xml version"1.0" encoding"UTF-8"?><!--status : 這個用于設置log4j2自身內…

cas4.2.7與shiro進行整合

準備工作 cas單點登錄開始前準備&#xff0c;請參考cas4.2.7實現單點登錄。 與shiro進行整合 注&#xff1a;準備工作的基礎上&#xff0c;對cas客戶端進行如下改進。 引入相關jar包 shiro-cas-1.2.6.jar shiro-core-1.2.6.jar shiro-spring-1.2.6.jar shiro-web-1.2.6.jar web…

命令行fuck神器

文章 thefuck git thefuck 轉載于:https://www.cnblogs.com/hujunzheng/p/6935587.html

springmvc配置MappingJackson2HttpMessageConverter實現屬性駝峰和下劃線的轉換

需求 php調用java接口時&#xff0c;因為php那邊的屬性都是下劃線風格&#xff0c;java這邊的屬性都是駝峰的風格。配置springmvc的json轉換&#xff0c;在requestBody的時候&#xff08;調用對象的set 方法&#xff09;將java屬性name映射成下劃線形式 和 請求的參數匹配&…

springmvc中使用MockMvc測試controller

示例代碼 import com.alibaba.fastjson.JSONObject; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springfra…

swagger restful api form映射實體對象和body映射實體對象配置

實體Model ModelAttribute一個具有如下三個作用&#xff1a; ①綁定請求參數到命令對象&#xff1a;放在功能處理方法的入參上時&#xff0c;用于將多個請求參數綁定到一個命令對象&#xff0c;從而簡化綁定流程&#xff0c;而且自動暴露為模型數據用于視圖頁面展示時使用&…

程序員的開發文檔

Web版&#xff1a; DevDocs API Documentation 桌面版&#xff1a;devdocs-app 轉載于:https://www.cnblogs.com/hujunzheng/p/7015947.html

ssh端口轉發(之kettle ssh方式連接數據庫)

ssh參數解釋 格式  ssh [user]host [command] 選項&#xff1a; -1&#xff1a;強制使用ssh協議版本1&#xff1b; -2&#xff1a;強制使用ssh協議版本2&#xff1b; -4&#xff1a;強制使用IPv4地址&#xff1b; -6&#xff1a;強制使用IPv6地址&#xff1b; -A&#xff1a…

ThreadLocal和InheritableThreadLocal使用

InheritableThreadLocal代碼 public class InheritableThreadLocal<T> extends ThreadLocal<T> {protected T childValue(T parentValue) {return parentValue;}ThreadLocalMap getMap(Thread t) {return t.inheritableThreadLocals;}void createMap(Thread t, T f…

mybatis generator修改默認生成的sql模板

相關連接&#xff1a; mybatis-generator擴展教程系列 -- 自定義sql xml文件 git項目地址 轉載于:https://www.cnblogs.com/hujunzheng/p/7110510.html

oauth簡單使用

一、oauth原理參考 理解OAuth 2.0 二、本例中采用授權碼模式 大致流程 &#xff08;A&#xff09;用戶訪問客戶端&#xff0c;后者將前者導向認證服務器。  &#xff08;B&#xff09;用戶選擇是否給予客戶端授權。  &#xff08;C&#xff09;假設用戶給予授權&#xff0c…

我眼中的服務提供和服務消費

服務提供和消費腦圖 服務提供和消費腦圖 參見: 服務提供者, 服務消費者, 服務注冊中心 服務提供者 1.服務提供者啟動&#xff0c;解析xml文件中配置的服務&#xff0c;這里使用Dom4j解析。 2.將服務的一些相關信息注冊到 服務注冊中心。 注&#xff1a;服務相關信息&#xff1a…

shiro整合oauth

前言 如果oauth原理還不清楚的地方&#xff0c;其參考這里。 一、基本思路腦圖 二、客戶端shiro配置 shiro配置文件 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:util&q…

springmvc+swagger2

一、swagger2依賴 <!--swagger--> <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><exclusions><exclusion><artifactId>spring-aop</artifactId><groupId>org.s…

獲取資源文件工具類

如果沒有依賴spring&#xff0c;可以將分割線下的方法去掉 import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframe…