2012-11-21 2 views
3

응답을 둘러싼 래퍼를 사용하는 JSON 기반 서비스를 사용하려고합니다. 래퍼는 다음과 같습니다.JSON/Jackson을 사용할 때 메시지 래퍼를 처리하는 방법

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

"결과"에는 개체 또는 개체 배열이 포함될 수 있습니다. 예를 들어, "apple"서비스를 호출하는 경우 결과 내에서 사과 개체 또는 사과 개체 배열을 가져옵니다. 마찬가지로 "오렌지색"서비스를 호출하는 경우 결과 내에서 주황색 객체 또는 주황색 객체 배열을 얻습니다.

질문은 어떻게 잭슨을 사용하여 이것을 deserialize 할 수 있습니까?

감사합니다,

답변

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; 

    } 
관련 문제