2

現在、リストを返すだけの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"}

これにはどこかでいくつかの構成が必要であるように思われますが、必要な結果を得る方法を知っている人はいますか?

4

2 に答える 2

5

ジャクソンを使用していると仮定して、@JsonTypeInfoアノテーションを見てください。これは、JSONのシリアル化と逆シリアル化でタイプ情報が使用されるかどうかとその方法の詳細を構成するために使用されます。その使用法と動作は、使用しているジャクソンのバージョンによって異なります。

于 2012-07-12T09:40:42.910 に答える
1

タイプ情報を完全に抑制するには、次のアノテーションを使用する必要がありました。

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