【发布时间】:2023-04-08 05:07:01
【问题描述】:
在开发 Web 服务时,我构建了一个 GET 方法来返回系统对象的 JSON 列表(自定义对象,而不是 java.lang 类型)。出乎意料的是,我收到了一个带有 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;
}
}
/systems/list 的结果
{
"system": [
{
"id": "248",
"name": "FOO"
},
{
"id": "617",
"name": "BAR"
}
]
}
在我期待的时候
[
{
"id": "248",
"name": "FOO"
},
{
"id": "617",
"name": "BAR"
}
]
【问题讨论】:
-
我不知道问题的根源,但它的包装 JSON 类型,我的情况是一样的,您可以通过执行
@XmlRootElement(name = "my_system")来更改密钥"system"。 -
你在使用带有 Jersey 的 Glassfish 吗?
-
@Maraboc 感谢您与我一起思考。这确实将密钥更改为“my_system”,但不会将其删除。重命名类也没有
-
@peeskillet 我做到了......我去找一个黑暗的角落躲起来,现在感到羞愧:|知道为什么在其他 REST 服务上运行良好吗?它不是该项目中开发的第一个