2013-04-13 16 views
2

naybody是否知道如何使用Jersey的GET方法返回僅返回實體的某些字段而不是全部的JSON? 有沒有人知道使用Jersey的GET方法返回只返回實體的某些字段而不是全部的JSON的方法? 例如在下面的課程中,我希望收到(帶POST)'name'和'confidential'的值,而返回時使用GET(帶GET)我只需要'name'值,而不是'保密'。Java Jersey使用GET返回僅返回一些字段而不是全部的JSON

@Entity 
@Table(name = "a") 
@XmlRootElement 
@JsonIgnoreProperties({"confifentialInfo"}) 
public class A extends B implements Serializable { 
    private String name; 
    @Basic(optional = false) 
    private String confifentialInfo; 
    // more fields, getters and setters 
} 
+0

爲什麼不返回所有領域中的實體,並且只使用你需要什麼? – Bizmarck

+0

我正在通過REST重新調整值,以便用戶將看到返回的字段。 – Molly

+0

在傑克遜的wiki上查找JsonViews和JsonFilters –

回答

0

如果您使用的是JAXB的方法,你可以標記與@XmlTransient字段忽略它們。如果您正在使用POJO映射,或者想僅爲某些請求排除字段,則應該使用low level JSON API構造JSON。

+0

JAXB是否支持接收值(使用POST)並將它們保存到數據庫但不返回(使用GET)這些值? – Molly

+0

@Molly通常情況下,您可以根據您收到的值進行任何操作,並返回您想要的任何內容,而不管它是GET還是POST。你應該怎麼做取決於你的代碼。我認爲你應該編輯你的問題,幷包括你的GET方法和你想要返回的實體的例子。 – Kapep

+0

好的,我編輯了它,謝謝。 – Molly

0

如果使用的是傑克遜,你可以使用方法

類似javax.xml.bind.annotation.XmlTransient 標記註釋,表明該批註的方法是通過 被忽略的註釋@JsonIgnore基於內省的序列化和反序列化功能。 也就是說,它不應該被視爲「吸氣劑」,「設置者」或「創造者」。 JSON的

而且@JsonIgnoreProperties房產

可以用於到的 性質(序列化過程中)或者抑制序列

註釋,或忽略處理 屬性讀取(反序列化過程)。

+0

如何使用@XmlRootElement使用Jackson?我應該定義ObjectMapper來使它工作嗎? – Molly

+0

看看這個 - http://www.mkyong.com/webservices/jax-rs/json-example-with-jersey-jackson/ – danieln

相關問題