2012-01-17 66 views
5

我正在使用RestEasy和hibernate在Jackson中返回響應。 我有一個bean播放器有字段:name,id,age,position。如何爲json響應添加和忽略字段

現在,我正在執行兩個GET休息方法來回應json。

  1. getPlayer(),這是返回一個球員:名字,身份證,年齡,位置。

  2. getPlayers(),這是返回一個球員名單,但與這名球員,我不想返回位置。

我的意思是,如何爲一個響應添加一個字段,並忽略另一個響應。

請建議。

感謝

回答

-7

不能你只是空出的位置場?

​​
+4

這會打開你,如果你忘記編寫代碼來清空該字段,則會引入一個錯誤。使用'@ JsonIgnore',所以你不必這樣做。 – 2013-01-16 19:38:11

+0

這將如何解決OP的要求「我如何爲一個響應添加一個字段並將其忽略用於另一個響應。」 ?另外,當你編寫代碼時「忘記」做東西總是會導致錯誤;) – eiden 2013-01-17 10:39:14

+1

這看起來對我來說是最簡單的解決方案,同時將@JsonIgnore添加到必須始終忽略的屬性。艾登,你有沒有找到其他辦法來做到這一點?我不喜歡JsonView和JsonFilter可以用來獲得相同結果的方式。 – Jayz 2013-03-04 05:30:25

17

你應該對POJO的getter使用@JsonIgnore註解。

http://jackson.codehaus.org/1.0.1/javadoc/org/codehaus/jackson/annotate/JsonIgnore.html

更新:

您需要在您的請求映射使用的界面與@JsonIgnoreProperties並將其設置爲@JSONFilter

你可以閱讀更多關於它在這裏: http://www.jroller.com/RickHigh/entry/filtering_json_feeds_from_spring

+0

,我知道,但我想同場忽略了一個作出反應並同場加另一個 – Romi 2012-01-17 10:41:51

+0

好了,然後看到我更新 – 2012-01-17 10:47:45

+0

爲鏈接給...我需要做一個接口AppDetailFilter (),並在請求中使用@JsonFilter。但沒有得到接口中的內容,以及如何使用它來忽略不同請求的不同字段。 – Romi 2012-01-17 11:33:02

0

我使用tomee,忽略JSON響應我transient工程現場,但我不知道這是否是去的正確方法(沒有傑克遜看到我的申請,我只是包含的JEE-網絡API):

的Servlet

import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.Produces; 
import javax.ws.rs.core.MediaType; 

@Path("/") 
@Produces({ MediaType.APPLICATION_JSON }) 
public class JsonApi { 

    @GET 
    @Path("testapi") 
    public MyObject testApi() { 
     return new MyObject("myname", "mycolor"); 
    } 
} 

對象

public class MyObject { 

    public MyObject() { 
    } 

    public MyObject(String name, String color) { 
     this.name = name; 
     this.color = color; 
    } 

    public String name; 

    public transient String color; 
} 

Respo NSE

{"name":"myname"} 
+0

這種方法在使用持久性時可能會引入問題,我不會這麼做。另一方面,如果你只是爲了數據傳輸而使用這個對象,那應該沒問題。 – holmicz 2017-03-04 23:54:14