2015-06-19 29 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