現在私は単にリストを返す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"}
私にはこれがどこかに何らかの設定を必要とするように思われます、誰が必要な結果を得る方法を知っていますか?
回答:
回答№1は5あなたがジャクソンを使用していると仮定して、見てみましょう @JsonTypeInfo 注釈。 型情報がJSONシリアライゼーションおよびデシリアライゼーションで使用されるかどうか、およびその使用方法の詳細を構成するために使用されます。その使用方法と動作は、使用しているjacksonのバージョンによって異なります。
回答№2の場合は0
型情報を完全に抑制するために、私は以下のアノテーションを使わなければなりませんでした:
@JsonTypeInfo(use=JsonTypeInfo.Id.NONE)
@JsonDeserialize(as=NoType.class)