2014-02-21 2 views
1

제품 정보를 가져 오기 위해 REST 웹 서비스 (Shopware)를 사용하고 있습니다. 우리의 문제는 항상 null 인 범주입니다.Java 및 저지와 함께 categoryID가있는 카테고리의 JSON 비 직렬화

와이어를 통해 제공되는 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(); 

우리는 범주를 제외하고 문제없이 모든 필드에 액세스 할 수 있습니다. Jersey가 올바른 클래스에 매핑하는 방법이 없도록 키 (key) 인 ID가 있기 때문입니다.

질문 :

  1. 내가 구글에서 검색 할 수있는 뭔가가 있도록 이름이 카테고리의 JSON 표기법의 종류가 있습니까?

  2. 저지 주석, 사용자 정의 유형 어댑터 또는 비 직렬화 기가 범주를 인식하고 범주 컬렉션을 채우도록 알려주는 것과 같은 힌트가 있습니까? 답변으로 브라이언 로치의 코멘트를 다시 게시

+1

음 :로 변경합니다. 그걸'Map '로 바꾸십시오. –

+0

고마워요, 그 속임수를했습니다. – Christoph

답변

1

: 당신의 JSON에서 '카테고리'이후

배열 (의 객체) 아니다, 그것의 배열에 매핑 할 것 같지 자바에서. 당신의 JSON에서 '범주'는 자바의 배열에 매핑 할 예정 배열 (의 객체)의 가능성이 아니므로,

Map<String,Category>