休息Web服务不返回JSON数组

时间:2017-05-05 05:48:35

标签: java json rest

在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"}]}

1 个答案:

答案 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数组,即使对于单个参数列表也是如此。就是你想要的。

目前您的应用程序可能已经拥有了解如何序列化列表的提供程序,那么您目前使用的依赖项是什么?