【发布时间】:2017-07-23 00:17:37
【问题描述】:
使用带有相同代码的 Jersey 并在 Glassfish 3.1.2 和 4.1.2 中进行测试会产生不同的结果输出。这是代码:
@GET
@Produces(MediaType.APPLICATION_JSON)
public ArrayList<Lenovo> getList(@DefaultValue("0") @QueryParam("limit") final int limit,
@DefaultValue("0") @QueryParam("offset") final int offset,
@DefaultValue("0") @QueryParam("id") final int id,
@DefaultValue("") @QueryParam("series") final String series) {
DBBase obj = new Lenovo(id, series);
DBSearch dbs = new DBSearch(limit, offset, obj);
return bl.getList(dbs);
}
glassfish 3.1.2 的 JSON 输出:
{
"Lenovo": [
{
"id": "1",
"series": "X220"
},
{
"id": "12",
"series": "X230"
}
]
}
Glassfish 4.1.2 的 JSON 输出:
[
{
"id": "1",
"series": "x220"
},
{
"id": "2",
"series": "x230"
}
]
从数据库中获取数据并返回对象。
ArrayList<Agama> rtn = new ArrayList<Lenovo>();
ResultSet rs = stmt.executeQuery(sql.toString());
while (rs.next()) {
rtn.add(new Lenovo(rs));
}
return rtn;
联想对象:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(namespace="Lenovo")
@XmlType(name = "Lenovo", propOrder = {
"id",
"series"
})
public class Lenovo extends DBBase {
int id;
String series;
private void setValues(ResultSet rs) {
try {
id = rs.getInt("id");
series = rs.getString("series");
} catch (SQLException ex) {
ErisHelper.logger.error("Err>" + ex.getMessage(), ex);
}
}
}
我尝试使用 GLassfish 的 Java 平台 JDK 1.6、1.7 并得到相同的结果。如何在不同的 Glassfish 版本中使用相同的代码获得相同的 JSON 结果输出。谢谢。
【问题讨论】:
-
对我来说看起来不像是有效的 json。无论如何,请发布
Lenovo课程。 -
@MouseEvent 我已经发布了Lenovo Class,相同的代码在不同的GF 中尝试得到不同的结果。
-
仅供参考,后一个 json 是正确的。可能更正了早期版本中的一个错误。
-
如果你真的想要前者,你可以定义一个只保存数组列表的包装类(当然它也应该有正确的 jaxb 注释)并返回它。
标签: java json jersey glassfish