Я создаю REST API из Java, где я возвращаю список объектов следующим образом:
@Path("/order")
public class OrderService implements IService
{
@Override
public Response get()
{
List<DataObj> list = new ArrayList<>();
List<SubDataObj> subList = new ArrayList<>();
subList.add(new SubDataObj("1"));
GenericEntity<List<DataObj>> entity;
list.add(new DataObj("A", "22", TestEnum.test1, DateTime.now(), subList));
list.add(new DataObj("B", "23", TestEnum.test2, DateTime.now(), subList));
entity = new GenericEntity<List<DataObj>>(list){};
return Response.ok(entity).build();
}
}
Здесь служба возвращает штраф Response, если не используется subList
, который является списком объектов в классе DataObj
. Тем не менее, когда я использую его, я получаю сообщение об ошибке:
SEVERE: MessageBodyWriter not found for media type=application/json, type=class java.util.ArrayList, genericType=java.util.List<dyno.scheduler.restservice.DataObj>.
Вот классы DataObj
и SubDataObj
:
@XmlRootElement
class DataObj
{
private String name;
private String age;
private TestEnum enumVal;
private DateTime currentDate;
private List<SubDataObj> subData;
public DataObj(String name, String age, TestEnum enumVal, DateTime currentDate, List<SubDataObj> subData)
{
this.name = name;
this.age = age;
this.enumVal = enumVal;
this.currentDate = currentDate;
this.subData = subData;
}
public DataObj() {}
/**
* @return the name
*/
public String getName()
{
return name;
}
/**
* @param name the name to set
*/
public void setName(String name)
{
this.name = name;
}
/**
* @return the age
*/
public String getAge()
{
return age;
}
/**
* @param age the age to set
*/
public void setAge(String age)
{
this.age = age;
}
/**
* @return the enumVal
*/
public TestEnum getEnumVal()
{
return enumVal;
}
/**
* @param enumVal the enumVal to set
*/
public void setEnumVal(TestEnum enumVal)
{
this.enumVal = enumVal;
}
/**
* @return the currentDate
*/
public DateTime getCurrentDate()
{
return currentDate;
}
/**
* @param currentDate the currentDate to set
*/
public void setCurrentDate(DateTime currentDate)
{
this.currentDate = currentDate;
}
/**
* @return the subData
*/
public List<SubDataObj> getSubData()
{
return subData;
}
/**
* @param subData the subData to set
*/
public void setSubData(List<SubDataObj> subData)
{
this.subData = subData;
}
}
DataSubObj
класс:
class SubDataObj
{
private String subId;
public SubDataObj(String subId)
{
this.subId = subId;
}
/**
* @return the subId
*/
public String getSubId()
{
return subId;
}
/**
* @param subId the subId to set
*/
public void setSubId(String subId)
{
this.subId = subId;
}
}
Я попытался добавить аннотацию @XmlRootElement
в свой класс SubDataObj, но это не сработало.
Любая помощь будет оценена!