在Web服务调用中,如果响应是包含单个元素的列表,则REST Web服务将返回JSON对象而不是JSON数组。我怎么能总是返回一个数组?
@GET
@Produces("application/json")
@Path("/chekinList")
public List<LocationReguest> getChekinList(@FormParam("childID") String userName,@FormParam("appkey") String appkey,@FormParam("appPassword") String appPassword) // Getting the list of check in list
{
LocationController locationController = new LocationController(); //Controller object
List<LocationReguest> locreqlist = locationController.getChekinList(userName); //Calling controller function
return locreqlist; //return proper representation object
}
示例:
拥有一个对象时的JSON对象
{"childRequest":{"childName":"test123Child","childUserName":"add"}}
拥有更多对象时的JSON对象数组输出:
{"childRequest":[{"childName":"Child ONE","childUserName":"chlid1"},{"childName":"abayakoon","childUserName":"abey"}]}
答案 0 :(得分:1)
您需要编写MessageBodyWriter的自定义实现,但不是重新发明轮子,也许更容易使用包含它的依赖项:
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
<version>2.4.2</version>
</dependency>
它为JAX-RS使用的类路径添加了一个提供程序,用于序列化对JSON的REST调用的返回值,在您的情况List<LocationReguest>
中。此实现序列化列表的方式是始终返回JSON数组,即使对于单个参数列表也是如此。就是你想要的。
目前您的应用程序可能已经拥有了解如何序列化列表的提供程序,那么您目前使用的依赖项是什么?