目前我正在尝试创建一个只返回列表的Web服务;
@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"}
在我看来,这需要某些配置,谁知道如何获得所需的结果?
答案 0 :(得分:5)
假设您使用的是jackson,请查看@JsonTypeInfo注释。它用于配置是否以及如何使用类型信息与JSON序列化和反序列化的详细信息。它的用途和行为取决于您使用的杰克逊版本。
答案 1 :(得分:1)
要完全抑制类型信息,我必须使用以下注释:
@JsonTypeInfo(use=JsonTypeInfo.Id.NONE)
@JsonDeserialize(as=NoType.class)