2017-05-05 36 views
0

在Web服務調用中,如果響應是包含單個元素的列表,則REST Web服務返回JSON對象而不是JSON數組。我怎樣才能總是返回一個數組?其他Web服務不返回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

您需要編寫一個MessageBodyWriter的自定義實現,但是ins重新發明輪子的TEAD也許它更容易,只需使用包含它的依賴性:在你的情況

<dependency> 
    <groupId>com.fasterxml.jackson.jaxrs</groupId> 
    <artifactId>jackson-jaxrs-json-provider</artifactId> 
    <version>2.4.2</version> 
</dependency> 

它增加了一個供應商所使用的JAX-RS序列化REST調用JSON的返回值的類路徑, List<LocationReguest>。這個實現序列化列表的方式是始終返回一個JSON數組,即使是單個參數列表。只是你想要它。

目前很可能您的應用程序已經有了一個知道如何序列化列表的提供者,那麼您目前使用哪些依賴關係?