1

Jersey は、デフォルトで object に返される単一の要素を変換します。しかし、クライアント側はjsonのデータがarraylistであることを期待しています

モデルクラスは LocationDetails

public class LocationDetails {
    private String locationAccount;
    private String locationName;
    private String locationStreet;
    private String locationPostcode;
}

LocationDetails の配列リストを持つ他のクラス LocationData として

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class LocationData {
    private ArrayList<LocationDetails> Locations;
}

コントローラー クラスは、次のコードを使用して JSON に変換しています。

  //Getting location and item along with barcodes
        @POST
        @Path("/getLocationAndItemData")
        @Produces(MediaType.APPLICATION_JSON)
        public LocationResponse getAlllocations(){
               ArrayList<LocationDetails> locationDetailList = new ArrayList<LocationDetails>();
               LocationDetails details = new LocationDetails();
           //setting location account                        
               details.setLocationAccount("10125");
               locationDetailList.add(details); 
}

次のコードはjsonを次のように返しますLocationData : {LocationDetails : {"LocationAccount","10125"}}

一方、私はそれを次のようにしたい:

LocationData : {LocationDetails : [{"LocationAccount","10125"}]}

クライアント側は、データがリスト内にあることを期待するためです。

ロジック全体を変更せずに型を変換する方法。私は jersey を使用しています。

4

2 に答える 2

0

私も同じ問題を抱えていました。非常に多くの調査の結果、問題はMyEclipse(Persisted コンテナー) にインポートされた jar ファイルが原因であることがわかりました。私はそれを削除しました。同じコードが機能します。jsonフォーマットは[{single element}].

于 2014-01-09T08:29:11.433 に答える