2014-02-21 46 views
1

我們正在使用REST webservice(Shopware)來獲取產品信息。 我們的問題是總是空的類別。JSON反序列化以categoryID作爲Java和Jersey的關鍵字的類別

這過來在電線上的JSON看起來是這樣的:

{ 
    "data":{ 
     "id":3, 
     "mainDetail":{ 
     "id":3, 
     "articleId":3, 
     "categories":{ 
      "14":{ 
       "id":14, 
       "name":"Edelbr\u00e4nde" 
      }, 
      "21":{ 
       "id":21, 
       "name":"Produktvergleiche & Filter" 
      }, 
      "50":{ 
       "id":50, 
       "name":"Brandies" 
      } 
     }, 
     "success":true 
     } 
    } 
} 

我們的文章類的定義是這樣的:

@XmlElement(name = "categories") 
public Category[] getCategories() { 
     return categories; 
} 

public void setCategories(Category[] categories) { 

     this.categories = categories; 
} 



    Articles articles = apiClient.getClient().resource(apiClient.getBaseUrl() + this.getResourcePath()).queryParams(this.params).type(MediaType.APPLICATION_JSON).accept(MediaType.APPLICATION_JSON).get(Articles.class); 

// this always returns null 
Categories categories = articles.getCategories(); 

我們能夠訪問所有字段,而除了類別的問題。 我們認爲這是因爲作爲密鑰的ID,所以澤西島現在不會如何將它們映射到正確的類。

問題:

  1. 是否有一個名字爲這種類別的JSON符號,使我有東西在谷歌搜索?

  2. 你對球衣註釋,自定義類型適配器或類似的東西有任何提示,它告訴反序列化器識別類別並填充我們的類別集合嗎?

+1

好吧,既然「類別」在你的JSON是不是數組(它的對象),它不太可能它要映射到Java中的數組。將它改爲'Map ',因爲這就是你所擁有的。 –

+0

謝謝,這個伎倆。 – Christoph

回答

1

轉貼布萊恩·羅奇作爲答案的評論:

,因爲在你的JSON「類」是不是數組(它的對象),其 不大可能其將映射到一個數組在Java中。將其更改爲:

Map<String,Category>