[英]How to JSON parse immutable object in Java + Jersey
所以我只是嘗試了Jersey的REST服務,似乎我們的工作正常。 我只公開get服務,並且我使用這些服務公開的所有對象類型都在Java中具有不可變對象表示。 默認情況下,Jersey似乎使用解析器(JAXB?),需要為應解析的類,零arg構造函數和setter設置@XmlRootElement注釋。
我一直在使用Gson沒有零參數構造函數,沒有setter和final在所有字段上都沒有任何問題。 是否有任何方法可以用澤西島(即它正在使用的paser)實現這一目標? 我已經看到了使用適配器類的解決方案,這些解決方案類將數據從不可變對象映射到可變表示,但是如果可以使用Gson實現它而沒有添加任何內容,這看起來像很多樣板(新類,更多注釋等)。
注意:1)我聽說人們推廣使用零參數構造函數並聲稱Gson不應該沒有它。 這不是我感興趣的.2)我真的嘗試使用谷歌搜索,但我的關鍵字可能會關閉。 換句話說,適度地羞辱我。
編輯1:如果我這樣做,我的網絡服務有效:
@XmlRootElement
public class Code{
private String code; //Silly object just used for example.
public Code(){}
//(G || S)etters
}
使用此類公開對象:
@GET
@Produces(MediaType.APPLICATION_JSON)
public Set<Code> get(@QueryParam("name") String name) { // Here I want to use a class of my own instead of String name, haven't figured out how yet.
return this.codeService.get(name);
}
如果我用以下代碼替換代碼,Web服務將停止工作:
public class Code{
private final String code;
@JsonCreator
public Code(@JsonProperty("code") String code) {
this.code = code;
}
//Getters omitted
}
我想要的是能夠1)具有可以從json解析的不可變對象和2)能夠在Spring MVC中為我的傳入對象定義類似@RequestBody的東西。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.