2017-05-05 14 views
0

Webサービス呼び出しで、レスポンスが単一の要素を含むリストである場合、REST WebサービスはJSON配列ではなくJSONオブジェクトを返します。どうすれば配列を返すことができますか?Rest 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オブジェクト出力1つのオブジェクト複数のオブジェクトを持つ

{"childRequest":{"childName":"test123Child","childUserName":"add"}} 

JSONオブジェクト配列出力:

{"childRequest":[{"childName":"Child ONE","childUserName":"chlid1"},{"childName":"abayakoon","childUserName":"abey"}]} 

答えて

1

あなたは書く必要がありますMessageBodyWriterのカスタム実装ですが、車輪の再発明のTEADは、おそらくそれはちょうどそれを含む依存関係を使用するように簡単です:

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

それはあなたのケースでは、JSONへのREST呼び出しの戻り値をシリアル化するためにJAX-RSで使用するクラスパスにプロバイダを追加しますList<LocationReguest>。この実装がリストをシリアライズする方法は、単一の引数リストの場合でもJSON配列を常に返すことです。ちょうどあなたがそれを望む方法。

現時点では、あなたのアプリに既にリストをシリアル化する方法を知っているプロバイダが存在する可能性が高いので、現在どの依存関係を使用していますか?

関連する問題