Jersey を使用して REST サービスのクライアントを作成しました。何らかの理由で、非整列化する JSON に空の配列がある場合、List オブジェクトには単一の要素が含まれます。そのオブジェクトは、デフォルトのコンストラクターで構築されたかのように、すべてのメンバーが null に設定されています。
Order.java:
@XmlRootElement
public class Order {
private int id;
private List<Photo> photos;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public List<Photo> getPhotos() {
return photos;
}
}
JSON サービスを使用するクライアント コード:
Client client = Client.create();
WebResource webResource = client.resource(environment.url);
Order order = webResource.path("Orders")
.type(MediaType.APPLICATION_FORM_URLENCODED_TYPE)
.accept(MediaType.APPLICATION_JSON_TYPE)
.post(Order.class, formData);
ログは、返された JSON が次のとおりであることを示しています。
{"id":704,"photos":[]}
ただし、List "photos" は予想どおり空ではありませんが、1 つの Photo オブジェクトが含まれています。このオブジェクトのすべてのメンバーは、既定のコンストラクターで構築されたかのように null です。
このオブジェクトを作成しているのは何ですか?またその理由は何ですか?
詳細: オブジェクトのリストの代わりに、列挙型のリストを逆シリアル化しようとすると、同様の問題が発生します。この場合、今度は「null」だけを含むサイズ 1 のリストも取得します。