2012-04-27 57 views
2

我已经编写了一个应该返回问题列表的网络服务 网络服务工作正常,我正在以JSON获得响应。 JSON响应如下: {“QuestionList”:[{“answer”:{“options”:[“Andriod is a phone”,“Android is a language”,“Android is a new fast food “,”Android是移动应用开发工具“]},”id“:”0“,”question“:”什么是Android?“},{”answer“:{”options“:[”No“,”是“}},”id“:”1“,”question“:”你知道Android吗?“},{”answer“:{”options“:[”No“,”Yes“,”Yes“,”Yes “}},”id“:”2“,”question“:”你认识Android吗?“,{”answer“:{”options“:[”Interface is a contract for a class“,”It is class“ ,“这是一个抽象类”,“以上都不是”]},“id”:“3”,“question”:“什么是接口?”},{“answer”:{“options”:[ Sonia Gandhi“,”Rahul Gandhi“,”Manmohan Singh“,”Pratibha Patil“]},”id“:”4“,”question“:”谁是印度总理?“},{”answer“:{选项“:[”Haryana“,”Delhi“,”Deheradun“,”Darjeling“]},”id“:”5“,”question“:”什么是印度的首都?“},{”answer“:{ “选项”:[“抽象类是一个预先定义的类“,”部分实现一个类“,”至少有一个抽象方法的类“]},”id“:”6“,”问题“:”什么是抽象类?“}] }如何从JSON响应中填充列表<Object>

现在我有这个响应转换成一个列表

这里是问题类

public class Question { 

    private int id; 
    private String question; 
    private Answer answer; 

    public Question() { 
     // TODO Auto-generated constructor stub 
    } 

    public Question(int id, String question, Answer answer) { 
     setId(id); 
     setQuestion(question); 
     setAnswer(answer); 
    } 


    public int getId() { 
     return id; 
    } 


    public void setId(int id) { 
     this.id = id; 
    } 


    public String getQuestion() { 
     return question; 
    } 


    public void setQuestion(String question) { 
     this.question = question; 
    } 


    public Answer getAnswer() { 
     return answer; 
    } 


    public void setAnswer(Answer answer) { 
     this.answer = answer; 
    } 

    @Override 
    public String toString() { 
     return "[ Question id: " + getId() 
       + " Question: " + getQuestion() 
       + " Answer: " + getAnswer() + " ]"; 
    } 

} 

下面是答案类

public class Answer { 

    private List<String> options; 

    public Answer() { 
     // TODO Auto-generated constructor stub 
    } 

    public Answer(List<String> options) { 
     setOptions(options); 
    } 

    public List<String> getOptions() { 
     return options; 
    } 

    public void setOptions(List<String> options) { 
     this.options = options; 
    } 

    @Override 
    public String toString() { 
     return "[ Options: " + getOptions() + " ]"; 
    } 
} 

我现在无法给图了解如何将响应转换为列表 请帮助...

+1

你选择了一个[Json库](https://github.com/douglascrockford/JSON-java)吗? – 2012-04-27 05:41:25

+1

使用GSON ..如果json响应格式匹配,它可以直接解析你的类类型。 – Kamal 2012-04-27 05:43:08

回答

2

使用Gson:这将是这么简单

Gson gson = new GsonBuilder().create(); 
Answer a = gson.fromJson(response, Answer.class); 
System.out.println(a); 

GSON是一个功能强大的开源库,允许从POJO的成JSON一个简单的映射,和周围的其他方式。

0

使用此代码

Type collectionType = new TypeToken<List<Your_Object>>() { 
      }.getType(); 

List<Your_Object> your_Object = gson.fromJson(jsonString, collectionType); 

希望这会帮助你。