2017-05-23 7 views
-2

RESTサービスでデータを受信するときに問題が発生しました。 多くのプロパティを含むエンティティAをRequestBodyが受け取っています。それが動作しますJava RESTサービス、リストの代わりにリスト<String>を取得<Object>

{"setOfB": [{"id":1, "lastName":"lastName1"},{"id":2, "lastName":"lastName2"}]} 

:私はこのようなJSONを受け取った場合

Class A { 
Set<B> setOfB; 
... 
} 

Class B { 
Integer id; 
String lastName; 
} 

:そのうちの一つはB.

はのは、言ってみましょうエンティティのセットです。ちなみに、私がidを取り除くか、同じidの2つのオブジェクトを与えると、以下で説明する問題と同じ結果になります。何らかの理由で、私は、文字列のリストを受信する必要が

この場合
{"setOfB": ["lastName1", "lastName1"]} 

、私の実体は(Bエンティティとして)最初の値のセットを持つことになります。

これをどのように管理できるか知っていますか?文字列リストを取得し、各文字列がオブジェクトAのlastNameプロパティであることをJavaに伝えますか?

答えて

0

JSONを変更して以下のように変更することができます。

{ "setOfB":[{ "lastNameの": "lastName1"}、{ "lastNameの": "lastName2"}]}

それはつもり作品です。しかしあなたが{"setOfB":["lastName1"、 "lastName1"]}を送っているなら、javaはそれをStringのListとして扱います。そして、JSONを解析して、それに反対することはできません。

+0

同じ結果が得られます。これはid属性にそれぞれ異なる属性を追加した場合にのみ機能します(0を指定すると動作しません)。 私はインクリメントするランダムなものを与えることができますが、可能ならばこれを避けたいと思います... プライマリキーであるプロパティは何に関係なく表示されなければならないと思いますか?別の方法はありません...? – Pushi

+0

@プッシュ - なぜ "setOfB"はセットなのですか?それをリストにできますか?そして、あなたがオブジェクトの一意性をチェックしているのは、どのような基準よりもSetであることを意味する場合。あなたはequals()メソッドをオーバーライドしましたか? –

関連する問題