2012-11-21 73 views
3

我正在嘗試使用基於JSON的服務,該服務使用圍繞其響應的包裝器。包裝看起來像這樣:如何使用JSON/Jackson處理郵件包裝器

{ 
    "errors": [ 
     { 
      "message": "some message", 
      "code": "possibly some error code" 
     } 
    ], 
    "result": [], 
    "metadata": { 
     "limit": 100, 
     "offset": 0, 
     "total": 5 
    } 
} 

「結果」可能包含一個對象或一個對象數組。例如,如果我正在調用「apple」服務,則會在結果中獲取Apple對象或蘋果對象數組。同樣,如果我打電話給一個「橙色」服務,我會在結果中得到一個橙色對象或橙色對象數組。

問題是,我如何使用傑克遜反序列化這個?

感謝,

回答

0

也許這將幫助你:

List<artikli> lista = new ArrayList<artikli> (Testni_podaci());  
     Gson gson = new Gson(); 

      //list to JSON 
     String JsonString = gson.toJson(lista); 

     System.out.println(JsonString +"\n"); 

     JsonParser parser = new JsonParser(); 
     JsonElement element = parser.parse(JsonString); 
     JsonArray arrays = element.getAsJsonArray(); 

      //JSON to list 
     List<artikli> JsonToList = new ArrayList<artikli>(); 
     for(int i=0;i<arrays.size();i++){ 

     JsonElement e =arrays.get(i); 
     artikli k = new artikli(); 
     k=gson.fromJson(e,artikli.class); 
      JsonToList.add(k); 
    } 

測試數據:

public static List<artikli> Testni_podaci(){ 

     List<artikli> lista = new ArrayList<artikli>(); 
     kategorijaartikla kateg = new kategorijaartikla(); 

     kateg.setId(5); 
     kateg.setKategorija("kategorijaa"); 


     artikli temp = new artikli(); 
     temp.setId(1); 

     temp.setNaziv("artikl 1"); 
     temp.setKategorijaartikla(kateg); 
     lista.add(temp); 

     temp = new artikli(); 
     temp.setId(2); 
     temp.setNaziv("artikl 2"); 
     temp.setKategorijaartikla(kateg); 
     lista.add(temp); 

     return lista; 

    } 
相關問題