2016-04-28 70 views
0

目前我打印我的播客API的輸出是這樣的:Jersey:如何打印嵌套對象爲JSON的通用對象?

{ 
    "data":[{"feed":"someUrl","id":1,"name":"someName"}], 
    "success":true 
} 

我有一個與「數據」和「成功」生成對象的響應對象,我有播客對象與PodcastResponse對象「feed」,「id」,「name」。

@XmlRootElement() 
@XmlSeeAlso(PodcastResponse.class) 
public class Response { 
    @XmlElement 
    boolean success = true; 
    @XmlElement  
    List<PodcastResponse> data; 
    //Getters, Setters, etc. 
} 

@XmlRootElement() 
public class PodcastResponse { 
    @XmlElement 
    int id; 
    @XmlElement 
    String name; 
    @XmlElement 
    String feed_url; 
    //Getters, Setters, etc. 
} 

這將生成輸出:

@GET 
@Produces(MediaType.APPLICATION_JSON) 
public Response getPodcasts() { 
    return new Response(true, PodcastManager.getPodcasts()); 
} 

這確實工作。現在我想要生成Response類,以便可以使用PodcastResponse類。

@XmlRootElement() 
public class Response<T> { 
    @XmlElement 
    boolean success = true; 
    @XmlElement 
    List<T> data; 
    //Getters, Setters, etc. 
} 

按預期不工作,輸出:

{ 
    "data": ["[email protected]"], 
    "success":true 
} 

我如何寫一個通用的響應類,這樣我可以顯示數據中有一個varitey JSON格式?

+1

您將需要使用[JAXB批註(https://jersey.java.net/documentation/1.19.1/xml.html)爲PodcastResponse這樣當對象被序列化的串行知道如何爲每個字段生成JSON。 – randominstanceOfLivingThing

回答

2

使用JAXB Annotations,您可以使用Jersey將Java對象序列化爲XML或JSON。這是列出how to的頁面。

@XmlRootElement() 
public class PodcastResponse { 
    int id; 
    String name; 
    String feed_url; 
    //Getters, Setters, etc. 
} 
+0

它解決了你的問題嗎? – randominstanceOfLivingThing

+0

它適用於:'@XmlSeeAlso(PodcastResponse.class)',但我怎麼能用一個通用的響應呢? '@XmlSeeAlso(T)'不起作用。 – Eknoes

+0

我已更新我的問題 – Eknoes