/ / Премахване на информация за типа от JSON резултат - json, jersey, jax-rs

Премахнете типовата информация от резултата JSON - json, jersey, jax-rs

В момента се опитвам да създам webservice, която просто връща списък;

@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 за отговор № 1

Ако приемем, че използвате Джексън, погледнете @JsonTypeInfo анотация. Той се използва за конфигуриране на подробности за това дали и как се използва тип информация с JSON сериализация и десериализация. Използването и поведението му ще зависят от версията на jackson, която използвате.


0 за отговор № 2

За да премахнем напълно информацията за типа, трябваше да използвам следните пояснения:

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