我正在使用JBoss EAP 6.1中的JAX-RS开发RESTful Web服务(Resteasy 2.3.6.Final) . 我的webservice的响应应该是以下格式的JSON:
{"arrayName": [
{
"field1": "value1"
"field2", "value2"
"field3", "value3"
},
{
"field1", "Value4"
"field2", "value5"
"field3", "value6"
}
]
}
但是,Jackson和Jettison提供商都将我的对象列表转换如下:
[
{"myObjectName":
{
"field1":"value1",
"field2":"value2",
"field3":"value3",
}
},
{"myObjectName":
{
"field1":"value4",
"field2":"value5",
"field3":"value6",
}
},
]
我希望我的数组有一个名称,该数组中的元素没有名称 .
我设法使用Map和Array获得了预期的结果,但这似乎是一个糟糕的解决方案 .
有人能告诉我如何使用JAX-RS / Resteasy的最佳功能以更优雅的方式获得此结果吗?
代码是这样的:
@GET
@Path("/myPath")
@Produces(MediaType.APPLICATION_JSON)
public MyObject[] myPathJson() {
MyObject[] myObjectArray = new MyObject[3];
myObjectArray[0]=new MyObject();
myObjectArray[1]=new MyObject();
myObjectArray[2]=new MyObject();
return myObjectArray;
}
1 回答
为了解决我的问题,我将Resteasy的版本从2.3.6.Final升级到3.0.9.Final . 官方文档说明了如何执行此操作:
升级后,对象现在没有命名,输出只是{field1:“value1”} .
要命名数组,然后使用map:map.put(“arrayName”arrayObjects) .
因此生成响应JSON是我想要的: