2015-09-07 52 views
0

我寫RestEasy的客戶端API和輸出是這樣解析JSON輸出到多種類型的使用RestEasy的和Jackson

API甲返回的列表{「obj_a_list」:[A的對象]} API乙返回{ 「obj_b_list」:[B的對象]}

我試圖寫一個通用類

import java.util.List; 

class ListOfList<T> { 

    public ListOfList() {} 

    public List<T> getList() { 
     return theList; 
    } 

    public void setList(List<T> theList) { 
     this.theList = theList; 
    } 

    private List<T> theList; 

} // ListOfList 

是否有可能擁有動態標註@JsonProperty( 「obj_a_list」)或@JsonProperty( 「obj_b_list」 )在List屬性?

,以便它可以被解析爲

ListOfList<A> lol = response.readEntity(new GenericType<ListOfList<A>>(){}); 
List<A> la = lol.getList(); 

謝謝,薩米爾

回答

0

目前使用此解決辦法。

/* 
     jsonString format could be 
     { "A" : [ Array of A ] } OR 
     { "B" : [ Array of B ] } OR 
     { "C" : [ Array of C ] } 

    */ 
    public static <T> List<T> getList(Class<T> clazz, String jsonString, String arrayName) { 

     ObjectMapper mapper = new ObjectMapper(); 
     List<T> retVal = new ArrayList<T>(); 

     try { 
      Map<String, List<T>> userData = mapper.readValue(jsonString, Map.class); 

      List<T> l = userData.get(arrayName); 

      for (T a: l) { 
       retVal.add(mapper.readValue(mapper.writeValueAsString(a), clazz)); 
      } // for 


     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

     return retVal; 

    }