2015-06-19 58 views
0

當前正面臨一個問題,如何將json格式的對象列表序列化爲pojo。在我使用球衣休息服務的作品中,它可以使用json。如何使用具有對象數組的json對象反序列化休息請求。反序列化jakson中的對象數組列表

JSON數組

{ 
    "subject": "hi", 
    "description": [ 
     { 
      "subject": "hi" 
     }, 
     { 
      "subject": "hi" 
     } 
    ] 
} 

我的POJO類

public class t { 

    private String subject; 
    private List<t2> description; 

    public String getSubject() { 
     return subject; 
    } 

    public void setSubject(String subject) { 
     this.subject = subject; 
    } 

    public List<t2> getDescription() { 
     return description; 
    } 

    public void setDescription(List<t2> description) { 
     this.description = description; 
    } 

} 

t2.class

public class t2 { 
    private String subject; 

    public String getSubject() { 
     return subject; 
    } 

    public void setSubject(String subject) { 
     this.subject = subject; 
    } 
} 
+0

那麼,你只是想將json字符串轉換爲java對象? – Amir

+0

我認爲你可以在這個類似的問題找到解決方案: http://stackoverflow.com/questions/11106379/how-to-deserialize-json-array – Amir

+0

這裏的實際問題是什麼?這種類型和JSON看起來是兼容的,所以你只需聲明那個資源方法需要一個't'類型的參數,就是這樣。 – StaxMan

回答

-1

使用TypeReference。例如:

import java.io.IOException; 

import com.fasterxml.jackson.core.JsonParseException; 
import com.fasterxml.jackson.core.type.TypeReference; 
import com.fasterxml.jackson.databind.JsonMappingException; 
import com.fasterxml.jackson.databind.ObjectMapper; 


public class JacksonParser { 

    public static void main(String[] args) { 
     t data = null; 
     String json = "{\"subject\":\"hi\",\"description\":[{\"subject\":\"hi\"},{\"subject\":\"hi\"}]}"; 
     ObjectMapper mapper = new ObjectMapper(); 
     try { 
      data = mapper.readValue(json, new TypeReference<t>() { }); 
     } catch (JsonParseException e) { 
      System.out.println(e.getMessage()); 
     } catch (JsonMappingException e) { 
      System.out.println(e.getMessage()); 
     } catch (IOException e) { 
      System.out.println(e.getMessage()); 
     } 
     System.out.println(data); 
    } 

} 
+1

您不需要在那裏使用'TypeReference',因爲't'不是通用的。你可以使用't.class來代替。 – jgm