2012-07-12 41 views
2

當前我正在嘗試創建一個簡單地返回列表的web服務;從JSON結果中刪除類型信息

@Path("/random") 
@Singleton 
public class Random 
{ 
    @GET 
    @Path("/") 
    @Produces(MediaType.APPLICATION_JSON) 
    public MyResult<String> test() 
    { 
     MyResult<String> test = new MyResult<String>(); 
     test.add("Awesome"); 

     return test; 
    } 
} 

而且我MyResult類看起來是這樣的:

@XmlRootElement 
public class MyResult<T> implements Iterable<T> 
{ 
    private ArrayList<T> _items; 
    private int _total; 

    public MyResult() 
    { 
     _items = new ArrayList<T>(); 
    } 

    public ArrayList<T> getItems() 
    { 
     return _items; 
    } 

    public void setItems(ArrayList<T> items) 
    { 
     _items = items; 
    } 

    public int getTotal() 
    { 
     return _total; 
    } 

    public void setTotal(int total) 
    { 
     _total = total; 
    } 

    public void add(T item) 
    { 
     getItems().add(item); 
    } 

    public Iterator<T> iterator() 
    { 
     return getItems().iterator(); 
    } 
} 

現在,我從服務結果如下:

{"items":[{"@type":"xs:string","$":"Awesome"}],"total":"0"} 

但我不希望有任何的信息,我只是要求:

{"items":["Awesome"],"total":"0"} 

在我看來,這需要一些配置,誰知道如何獲得所需的結果?

回答

5

假設您使用傑克遜,請看@JsonTypeInfo註釋。它用於配置JSON序列化和反序列化時是否使用類型信息以及如何使用類型信息。它的使用和行爲將取決於您使用的傑克遜版本。

+2

@JsonTypeInfo(使用= Id.NONE)是溶液 – Thys 2012-07-12 12:10:40

0

要完全抑制類型的信息,我不得不使用以下注釋:

@JsonTypeInfo(use=JsonTypeInfo.Id.NONE) 
@JsonDeserialize(as=NoType.class)