POJO 属性在 JAX-RS 中作为 JSON 的数组返回
POJO attributes is returning as a Array for JSON in JAX-RS
我有一个 java web maven 项目,JAX-RS 使用 resteasy 版本 2.2.1.GA 实现。项目上的所有 JAX-RS 资源产生 y 消耗 application/json。我的问题是,当我返回单个 POJO 时,即使是这样的数组,也只序列化属性的值。
示例:
给出以下 类:
public class Pojo {
private Integer attr1;
private String attr2;
// GETTERs and SETTERs
}
@Path("pojos")
@Consumes("application/json")
@Produces("application/json")
public class PojoResource {
@GET
public Response list() {
List<Pojo> listResult = new ArrayList<>();
Pojo pojo = new Pojo();
pojo.setAttr1(1);
pojo.setAttr2("asdf");
listResult.add(pojo);
return Response.ok().entity(listResult).build();
}
}
如果我向 /pojos 发出 GET 请求,上面示例的结果是 [[1, "asdf"]]
,而不是 [{"attr1":1,"attr2":"asdf"}]
不知道是否需要写一个具体的Provider。我的项目配置类似于this.
我意识到我的错误是层模型中的数据恢复是作为对象的向量并且 return 没有处理(创建表示数据的 POJO)。
我有一个 java web maven 项目,JAX-RS 使用 resteasy 版本 2.2.1.GA 实现。项目上的所有 JAX-RS 资源产生 y 消耗 application/json。我的问题是,当我返回单个 POJO 时,即使是这样的数组,也只序列化属性的值。
示例:
给出以下 类:
public class Pojo {
private Integer attr1;
private String attr2;
// GETTERs and SETTERs
}
@Path("pojos")
@Consumes("application/json")
@Produces("application/json")
public class PojoResource {
@GET
public Response list() {
List<Pojo> listResult = new ArrayList<>();
Pojo pojo = new Pojo();
pojo.setAttr1(1);
pojo.setAttr2("asdf");
listResult.add(pojo);
return Response.ok().entity(listResult).build();
}
}
如果我向 /pojos 发出 GET 请求,上面示例的结果是 [[1, "asdf"]]
,而不是 [{"attr1":1,"attr2":"asdf"}]
不知道是否需要写一个具体的Provider。我的项目配置类似于this.
我意识到我的错误是层模型中的数据恢复是作为对象的向量并且 return 没有处理(创建表示数据的 POJO)。