gpt4 book ai didi

java - Jersey 休息服务器 - 返回列表作为 json

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:36:00 25 4
gpt4 key购买 nike

在 Tomcat 和 Glassfish 上运行相同代码时,返回列表的 json 结构有所不同。

@XmlRootElement
public Class Person {
private int personId;
private String name;
}

@GET
@Path("/persons")
public Response getPersons()
{
List<Person> persons = new ArrayList<Person>();
persons.add(new Person(1, "John Smith"));
persons.add(new Person(2, "Jane Smith"));

GenericEntity<List<Person>> entity = new GenericEntity<List<Person>>(Lists.newArrayList<persons)) {};
Return Response.ok(entity).build();
}

如果在 tomcat 上以 json 格式返回(我在本地机器上运行 Tomcat),结果将是:

[
{
"personId" : "1",
"name" : "John Smith"
},
{
"personId" : "2",
"name" : "Jane Smith"
}
]

如果在 Glassfish 上以 json 格式返回(在远程服务器上运行 Glassfish),结果将是:

{
"person" :
[
{
"personId" : "1",
"name" : "John Smith"
},
{
"personId" : "2",
"name" : "Jane Smith"
}
]
}

我怎样才能自己控制这种格式?如果可能的话,我更喜欢数组格式(如在 Tomcat 上)。无论哪种方式,我都希望它产生相同的结果。

编辑:

依赖项: Jersey 容器 servlet (2.14), Jersey 服务器(2.14), Jersey 媒体 moxy (2.14),javax.servlet-api (3.0.1)

Glassfish 版本:3.1.2.2(构建 5)

编辑 2:这是 Jersey 2.14 和 Glassfish 3.x 的问题

我刚刚安装了 Glassfish 3 和 4,并部署了其余应用程序来检查响应。返回列表时导致不同的 json 结构。 Glassfish 4 的响应与我在 Tomcat 上运行时得到的结果相同。

最佳答案

尝试添加响应媒体类型注释并尝试使用 List 而不是像这样的 GenericEntity:

 @GET
@Path("/persons")
@Produces({ MediaType.APPLICATION_JSON })
public Response getPersons()
{
List<Person> persons = new ArrayList<Person>();
persons.add(new Person(1, "John Smith"));
persons.add(new Person(2, "Jane Smith"));

Return Response.ok(persons).build();
}

关于java - Jersey 休息服务器 - 返回列表作为 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27937826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com