Spring MVC @JsonView使用詳解
Spring 提供了對Jackson 非常好的支援,可以檢視此spring-jackson-demo程式碼來掌握。這裡著重說一下@JsonView
的用法
JSON Views 基本用法
@JsonView
可以過濾序列化物件的欄位屬性,可以使你有選擇的序列化物件。下面看一個例子:
首先我們定義一個View
類,裡面包含我們對“要序列化的欄位”的定義,我們暫時歸為Summary
(摘要)。屬於Summary
的欄位都是我們要序列化的欄位。
這裡也可以將
View
類理解為一組“標識”,而Summary
就是其中的一個“標識”。
public class View {
interface Summary {}
}
View
類的定義很簡單。
然後我們定義我們的Bean類:User
public class User {
@JsonView(View.Summary.class)
private Long id;
@JsonView(View.Summary.class)
private String firstname;
@JsonView(View.Summary.class)
private String lastname;
private String email;
private String address;
private String postalCode;
private String city;
private String country;
}
可以看到,@JsonView
使用很簡單,加在屬性上,指定一個“標識”就好了。上面例子我們將Summary
指定給了id
、firstname
、lastname
三個屬性,這樣,當我們使用@JsonView
序列化User物件的時候,就只會序列化這三個屬性,可以隱藏一些不想序列化的欄位屬性。
SpringMVC根據@JsonView
序列化的方法如下:
@RestController
public class UserRestController{
@Autowired
private UserService userService;
@RequestMapping ("/user")
@JsonView(View.Summary.class)
public List<User> getUsers(){
return userService.listUsers();
}
}
在Controller中指定JsonVIew
即可。
當我們訪問/user
時,會得到如下結果:
[
{ "id" : 1, "firstname" : "Brian", "lastname" : "Clozel" },
{ "id" : 2, "firstname" : "Stéphane", "lastname" : "Nicoll" },
{ "id" : 3, "firstname" : "Rossen", "lastname" : "Stoyanchev" }
]
用法是不是很簡單?
JSON Views 繼承用法
JsonView 同時還支援繼承
比如我們需要將User分兩個規則進行序列化,一個是“基本資料”,即上面那三個屬性的規則;另一個是“詳細資料”,除了包含“基本資料”中的三個屬性外,另外還要包含幾個詳細資料email
、address
。
我們在View
中再加一個“標識”SummaryWithDetail
,定義如下:
public class View {
interface Summary {}
interface SummaryWithDetail extends Summary{}
}
這裡使用了繼承,SummaryWithDetail
繼承了Summary
,也就是說,當我們以SummaryWithDetail
的方式進行物件序列化時,出來的屬性同時也包含Summary
指定的屬性。我們在User
中指定SummaryWithDetail
:
public class User {
@JsonView(View.Summary.class)
private Long id;
@JsonView(View.Summary.class)
private String firstname;
@JsonView(View.Summary.class)
private String lastname;
@JsonView(View.SummaryWithDetail .class)
private String email;
@JsonView(View.SummaryWithDetail .class)
private String address;
private String postalCode;
private String city;
private String country;
}
可以看到,我們對email
和address
指定了SummaryWithDetail
標識。
增加Controller方法,測試:
@RestController
public class UserRestController{
@Autowired
private UserService userService;
@RequestMapping("/user")
@JsonView(View.Summary.class)
public List<User> getUsers(){
return userService.listUsers();
}
@RequestMapping("/user-with-detail")
@JsonView(View.Summary.class)
public List<User> getUsersWithDetail(){
return userService.listUsers();
}
}
這樣,當我們訪問/user-with-detail
時,會得到如下結果:
[
{
"id" : 1,
"firstname" : "Brian",
"lastname" : "Clozel",
"email": "[email protected]",
"address": "beijing China"
},
{
"id" : 2,
"firstname" : "Stéphane",
"lastname" : "Nicoll",
"email": "[email protected]",
"address": "beijing China"
},
{
"id" : 3,
"firstname" : "Rossen",
"lastname" : "Stoyanchev" ,
"email": "[email protected]",
"address": "beijing China"
}
]
相關推薦
spring mvc 配置詳解
app stl set方法 參數類型 utf-8 admin pathvaria 方案 -m 現在主流的Web MVC框架除了Struts這個主力 外,其次就是Spring MVC了,因此這也是作為一名程序員需要掌握的主流框架,框架選擇多了,應對多變的需求和業務時,可實行的
Spring MVC配置詳解
來源:https://www.cnblogs.com/superjt/p/3309255.html 現在主流的Web MVC框架除了Struts這個主力 外,其次就是Spring MVC了,因此這也是作為一名程式設計師需要掌握的主流框架,框架選擇多了,應對多變的需求
Spring MVC DispatcherServlet詳解
DispatcherServlet作用 DispatcherServlet是前端控制器設計模式的實現,提供Spring Web MVC的集中訪問點,而且負責職責的分派,而且與Spring IoC容器無縫整合,從而可以獲得Spring的所有好處。 Dispat
spring MVC 註解詳解以及說明
基於註釋(Annotation)的配置有越來越流行的趨勢,Spring 2.5 順應這種趨勢,提供了完全基於註釋配置 Bean、裝配 Bean 的功能,您可以使用基於註釋的 Spring IoC 替換原來基於 XML 的配置。本文通過例項詳細講述了 Spring 2.5 基
Spring MVC @ModelAttribute 詳解
[email protected]註釋void返回值的方法@Controller public class HelloModelController { @ModelAttr
spring mvc DispatcherServlet詳解之前傳---FrameworkServlet
做專案時碰到Controller不能使用aop進行攔截,從網上搜索得知:使用spring mvc 啟動了兩個context:applicationContext 和WebapplicationContext。 首先我們來了解applicationContext 和WebapplicationContext區
spring mvc DispatcherServlet詳解之interceptor和filter的區別
首先我們看一下spring mvc Interceptor的功能及實現: http://wenku.baidu.com/link?url=Mw3GaUhCRMhUFjU8iIDhObQpDcbmmRy_IPeumazg0ppnbmwqFUtLp9kSpuPPpeysf6EnHBLYFeWrbjqMq8BlW
Spring MVC @JsonView使用詳解
Spring 提供了對Jackson 非常好的支援,可以檢視此spring-jackson-demo程式碼來掌握。這裡著重說一下@JsonView的用法 JSON Views 基本用法 @Jso
Spring基本功能詳解
tex factor oid out 負責 sch bsp 初始化 pub 一、SpringIOC Spring的控制反轉:把對象的創建,初始化,銷毀的過程交給SpringIOC容器來做,由Spring容器控制對象的生命周期。 1.1 啟動Spring容器的方式:
純幹貨,Spring-data-jpa詳解(轉)
數據庫表結構 attribute 類型 n+1 asq sep pointcut 如何 odin 本篇進行Spring-data-jpa的介紹,幾乎涵蓋該框架的所有方面,在日常的開發當中,基本上能滿足所有需求。這裏不講解JPA和Spring-data-jpa單獨使用,所有的
java利用myeclipse自帶三大框架搭建三大框架(Hibernate+Struts2+Spring)過程詳解
sun 過程 9.png att alt 分享圖片 struts apach sch 搭建過程因人而異,我的搭建過程大致是這樣的: 1.創建一個javaweb項目; 2.導入Spring框架,上圖: 2.1: 2.2: 2.3: 3.
Spring框架Aop詳解
urn 項目 aop mil execution 有一個 dal 例如 cati 一.前言 在以前的項目中,很少去關註spring aop的具體實現與理論,只是簡單了解了一下什麽是aop具體怎麽用,看到了一篇博文寫得還不錯,就轉載來學習一下,博文地址:http://
Spring ioc 常用 詳解
rand 通過 prototype epo 外部文件 連接 text efault per [TOC] Spring容器 配置對象時默認的單例的 可以設置bean的scope屬性 singleton 單例模式,只會在IOC容器初始化的時候創建bean,並且只會創建一次 p
Spring Framework啟動詳解
service 控制 ice trap pri pos warn 層次結構 initial 之前一直對Spring啟動的過程很迷糊,所以這次國慶梳理一下。 Spring啟動一言以蔽之:創建一個根應用上下文。(因為其他的所有的應用上下文都可以通過各種方式繼承它) (一)了
SpringBoot進擊 | 二淺出:Spring Boot配置詳解
1.前言 上一節:SpringBoot進擊 | 一淺出:Spring Boot簡單快速上手書 上一篇介紹了 Spring Boot 的入門,在一般情況下,我們不需要做太多的配置就能夠讓 Spring Boot 正常執行。因為其使用“習慣優於配置”(專案中存在大量的配置,此外還內建了一
spring配置檔案詳解--真的蠻詳細
spring配置檔案詳解--真的蠻詳細 轉自: http://book.51cto.com/art/201004/193743.htm 此處詳細的為我們講解了spring2.5的實現原理,感覺非常有用
Java Web自定義MVC框架詳解
分享一個大神的人工智慧教程!http://blog.csdn.net/jiangjunshow 最近給學生講Java Web,希望他們能夠在學完這部分內容後自己實現一個MVC框架。但是突然發現百度上能搜尋到的靠譜的資料並不是很多,有些只是原理沒有程式碼實現,有些有程式碼實現但是
Spring Security 入門詳解
Spring Security 入門詳解 1.Spring Security介紹 Spring Security是基於spring的應用程式提供宣告式安全保護的安全性框架,它提供了完整的安全性解決方案,能夠在web請求級別和方法呼叫級別 處理身份證驗證和授權.它充分使用了依
Spring-data-jpa 詳解
本篇進行Spring-data-jpa的介紹,幾乎涵蓋該框架的所有方面,在日常的開發當中,基本上能滿足所有需求。這裡不講解JPA和Spring-data-jpa單獨使用,所有的內容都是在和Spring整合的環境中實現。如果需要了解該框架的入門,百度一下,很多入門的介紹。在這篇文章的接下來一篇,會有一
Spring AOP配置詳解
<aop:aspectj-autoproxy />的作用 通過配置織入@Aspectj切面 雖然可以通過程式設計的方式織入切面,但是一般情況下,我們還是使用spring的配置自動完成建立代理織入切面的工作。 通過aop名稱空間的<aop:aspectj-autoprox