2012-05-08 6 views
0

私はオブジェクトをとるJerseyを使用してエンドポイントを持っています。オブジェクトには、メンバーの1つとしてのリストがあります。しかし、空の配列を送信すると、リストに空の要素が与えられます。 「空要素」とは、そこにオブジェクトがあり、すべてのフィールドがnullであることを意味します。Jerseyは空のリストに "null"要素を与えます

@XMLRootElement 
public class myContainer { 
    public List<myObject> list; 
    // etc 
} 

@XMLRootElement 
public class myObject { 
    public String data1; 
    public String data2; 
    // etc 
} 

// I hit the following with "{\"list\":[]}"  

@POST 
@Consumes(MediaType.APPLICATION_JSON) 
public Response post(final myContainer x) { 
    for (myObject obj : x.list) { 
    // why do I hit this? 
    // debugging, I actually have an object here with all null fields 
    obj.data1 == null; // true 
    obj.data2 == null; // true 
    } 
} 

ジャージーがこれを行う理由は誰でも知っていますか?

私はWRITE_NULL_PROPERTIESをfalseに設定しましたが、どのように影響するかはわかりません。

+0

私もこの問題を抱えています。私のクライアントは、既定のコンストラクターで構築されたばかりのオブジェクトで空にする必要のあるリストを作成します。あなたは答えを見つけましたか? –

+0

私の回避策は、渡されるオブジェクトを検証することでした。すべてのnullフィールドの場合、それらをセットから削除します。 –

答えて

0

私はわからないけど、多分

@XmlElemet(nillable=true) 
public List<myObject> list; 

を設定すると、あなたが探して何ですか?

関連する問題