2017-05-23 46 views
-2

使用REST服務接收數據時出現問題。 我通過RequestBody接收包含許多屬性的實體A.其中之一是一個集實體B.Java REST服務,獲取列表<String>而不是列表<Object>

比方說:

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

Class B { 
Integer id; 
String lastName; 
} 

如果我收到這樣的JSON:

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

它會奏效。順便說一句,如果我脫掉身份證或給2個具有相同身份證的對象,它會得到與我在下面描述的問題相同的結果。

出於某種原因,我只收到一個字符串列表:

{"setOfB": ["lastName1", "lastName1"]} 

在這種情況下,我的實體只會有一組的第一個值(作爲B實體)。

你知道我該如何管理它:獲取字符串列表並告訴Java每個字符串都是對象A的lastName屬性?

回答

0

您可以修改您的JSON並將其更改爲如下所示。

{ 「setOfB」:[{ 「姓氏」: 「lastName1」},{ 「姓氏」: 「lastName2」}]}

這是要去工作。但是,如果您發送{「setOfB」:[「lastName1」,「lastName1」]} java會將其視爲字符串列表。它不能解析JSON來反對。

+0

它給出了相同的結果。它只適用於如果我添加id屬性與每個具有不同的(給每個0不會工作)。 我可以給我一個隨機的,但我希望儘可能避免這種情況... 您認爲財產是主鍵必須表明不管... ...嗎?沒有另一種方式...? – Pushi

+0

@Pushi - 爲什麼「setOfB」是一個Set,你可以把它列出來嗎?如果它意味着要設置,而不是以什麼爲基礎檢查對象的唯一性。 DId重寫equals()方法? –