2

目前我正在尝试创建一个简单地返回列表的网络服务;

@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"}

在我看来,这需要在某处进行一些配置,谁知道如何获得所需的结果?

4

2 回答 2

5

假设您使用的是 jackson,请查看@JsonTypeInfo注释。它用于配置类型信息是否以及如何与 JSON 序列化和反序列化一起使用的详细信息。它的使用和行为取决于您使用的杰克逊版本。

于 2012-07-12T09:40:42.910 回答
1

为了完全抑制类型信息,我不得不使用以下注释:

@JsonTypeInfo(use=JsonTypeInfo.Id.NONE)
@JsonDeserialize(as=NoType.class)
于 2015-07-06T10:26:33.453 回答