При разработке веб-службы я создаю метод GET, чтобы вернуть список объектов системы JSON (пользовательский объект, а не тип java.lang). Против ожиданий я получаю объект JSON с 1 параметром, содержащим массив, который я изначально ожидал. Что мне здесь не хватает?Список объектов, возвращаемых как объект JSON
системы класса
@XmlRootElement
public class System
{
private long id;
private String name;
@XmlElement
public long getId()
{
return id;
}
public void setId(long pId)
{
id = pId;
}
@XmlElement
public String getName()
{
return name;
}
public void setName(String pName)
{
name = pName;
}
}
REST сервис
@Path("/systems")
public class SystemHandler
{
@GET
@Path("/list")
@Produces({MediaType.APPLICATION_JSON})
public List<System> getSystems(@Context SecurityContext sc)
{
List<System> list = null;
//Populate the list
return list;
}
}
Результат/системы/список
{
"system": [
{
"id": "248",
"name": "FOO"
},
{
"id": "617",
"name": "BAR"
}
]
}
В то время как я ожидал
[
{
"id": "248",
"name": "FOO"
},
{
"id": "617",
"name": "BAR"
}
]
Я не знаю источник проблемы, но ее оболочка JSON, у меня то же самое в моем случае, и вы можете использовать ключ '' system '' путем выполнения '@XmlRootElement (name =" my_system ") 'например. – Maraboc
Вы используете Glassfish с Джерси? –
@Maraboc Спасибо, что подумали обо мне. Это действительно изменяет ключ на «my_system», но он не удаляет его. Также не переименовывает класс –