android 改造 2 响应遇到问题
android retrofit 2 response getting trouble
我是 Retrofit 2.0 的新手
我有 1 Ws,我收到了这个回复我已经使用 http://www.jsonschema2pojo.org/ 为此制作了 pojo,但我无法获得 qid 和 id。
虽然我得到了 que 和 ans 两个但不是两者的 id 可能是什么原因?
我也收到了 rawResponse,这是不需要的部分。什么原因请帮帮我。
{
"paper": [{
"que": {
"qid": "1",
"question": "????????????????"
},
"ans": [{
"id": "1",
"answer": "uiuyiyityu"
}, {
"id": "2",
"answer": "ytrretwr etret"
}, {
"id": "3",
"answer": "retre retret"
}, {
"id": "4",
"answer": "rtretret"
}]
}
]
}
作为回应,我只得到 05-17 05:43:03.380 4395-getFeed > =>: {
"exam": [{
"ans": [{
"answer": "sdfdsrewwer"
}, {
"answer": "ewrewrewr"
}, {
"answer": "e"wrewrewr
}, {
"answer": "e"wrewr"
}],
"que": {
"question": "retreret retret?"
}
},
我创建了类似的 pojo
我得到 response.body().getExam().get(1).getQue().getQueId() = null
请帮帮我...
你能post你的回复码吗??
但是试试这个,
response.body().getQue().getQid()
在方法 onRespone 中。
public class MyResponseBody{private Que que;}
**Que 是对象所以你需要创建一个新对象
public class Que{private String qid;}
PS : 但是 get 方法依赖于你的 model/POJO.
首先,您的原始回复不正确。如果您将回复粘贴到 http://jsonlint.com/
您将在第 12 行遇到解析错误。甚至 jsonschema2pojo 也会在您的原始响应中显示错误。首先修改成
{
"paper": [
{
"que": {
"qid": "1",
"question": "????????????????"
},
"ans": [
{
"id": "1",
"answer": "uiuyiyityu"
},
{
"id": "2",
"answer": "ytuyutyuty"
},
{
"id": "3",
"answer": "retre retret"
},
{
"id": "4",
"answer": "rtretret"
}
]
}
]
}
然后在jsonschema2pojo 工具上制作POJO。该工具将创建四个不同的 POJO,如下所示:
import javax.annotation.Generated;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
@Generated("org.jsonschema2pojo")
public class An {
@SerializedName("id")
@Expose
private String id;
@SerializedName("answer")
@Expose
private String answer;
/**
*
* @return
* The id
*/
public String getId() {
return id;
}
/**
*
* @param id
* The id
*/
public void setId(String id) {
this.id = id;
}
/**
*
* @return
* The answer
*/
public String getAnswer() {
return answer;
}
/**
*
* @param answer
* The answer
*/
public void setAnswer(String answer) {
this.answer = answer;
}
}
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Generated;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
@Generated("org.jsonschema2pojo")
public class Paper {
@SerializedName("paper")
@Expose
private List<Paper_> paper = new ArrayList<Paper_>();
/**
*
* @return
* The paper
*/
public List<Paper_> getPaper() {
return paper;
}
/**
*
* @param paper
* The paper
*/
public void setPaper(List<Paper_> paper) {
this.paper = paper;
}
}
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Generated;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
@Generated("org.jsonschema2pojo")
public class Paper_ {
@SerializedName("que")
@Expose
private Que que;
@SerializedName("ans")
@Expose
private List<An> ans = new ArrayList<An>();
/**
*
* @return
* The que
*/
public Que getQue() {
return que;
}
/**
*
* @param que
* The que
*/
public void setQue(Que que) {
this.que = que;
}
/**
*
* @return
* The ans
*/
public List<An> getAns() {
return ans;
}
/**
*
* @param ans
* The ans
*/
public void setAns(List<An> ans) {
this.ans = ans;
}
}
import javax.annotation.Generated;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
@Generated("org.jsonschema2pojo")
public class Que {
@SerializedName("qid")
@Expose
private String qid;
@SerializedName("question")
@Expose
private String question;
/**
*
* @return
* The qid
*/
public String getQid() {
return qid;
}
/**
*
* @param qid
* The qid
*/
public void setQid(String qid) {
this.qid = qid;
}
/**
*
* @return
* The question
*/
public String getQuestion() {
return question;
}
/**
*
* @param question
* The question
*/
public void setQuestion(String question) {
this.question = question;
}
}
现在您可以通过调用 POJO 的方法轻松获取您的 qid 和 id。使用此代码块获取 qid 和 id。
Paper paper = new Paper();
List<Paper_> papers = paper.getPaper();
for(Paper_ paper_ : papers){
int qid = paper_.getQue().getQid();
List<An> answers = paper_.getAns();
for(An answer : answers){
int ansId = answer.getId();
}
}
希望它能奏效。
您的 pojo class 如下所示:
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
import java.util.ArrayList;
import java.util.List;
/**
* Created by ln-141 on 17/5/16.
*/
public class PaperClass {
@SerializedName("paper")
@Expose
private List<Paper> paper = new ArrayList<Paper>();
/**
*
* @return
* The paper
*/
public List<Paper> getPaper() {
return paper;
}
/**
*
* @param paper
* The paper
*/
public void setPaper(List<Paper> paper) {
this.paper = paper;
}
public class An {
@SerializedName("id")
@Expose
private String id;
@SerializedName("answer")
@Expose
private String answer;
/**
*
* @return
* The id
*/
public String getId() {
return id;
}
/**
*
* @param id
* The id
*/
public void setId(String id) {
this.id = id;
}
/**
*
* @return
* The answer
*/
public String getAnswer() {
return answer;
}
/**
*
* @param answer
* The answer
*/
public void setAnswer(String answer) {
this.answer = answer;
}
}
public class Paper {
@SerializedName("que")
@Expose
private Que que;
@SerializedName("ans")
@Expose
private List<An> ans = new ArrayList<An>();
/**
*
* @return
* The que
*/
public Que getQue() {
return que;
}
/**
*
* @param que
* The que
*/
public void setQue(Que que) {
this.que = que;
}
/**
*
* @return
* The ans
*/
public List<An> getAns() {
return ans;
}
/**
*
* @param ans
* The ans
*/
public void setAns(List<An> ans) {
this.ans = ans;
}
}
public class Que {
@SerializedName("qid")
@Expose
private String qid;
@SerializedName("question")
@Expose
private String question;
/**
*
* @return
* The qid
*/
public String getQid() {
return qid;
}
/**
*
* @param qid
* The qid
*/
public void setQid(String qid) {
this.qid = qid;
}
/**
*
* @return
* The question
*/
public String getQuestion() {
return question;
}
/**
*
* @param question
* The question
*/
public void setQuestion(String question) {
this.question = question;
}
}
}
检查下面屏幕截图中用于创建 pojo 的选定选项 class。
我是 Retrofit 2.0 的新手 我有 1 Ws,我收到了这个回复我已经使用 http://www.jsonschema2pojo.org/ 为此制作了 pojo,但我无法获得 qid 和 id。 虽然我得到了 que 和 ans 两个但不是两者的 id 可能是什么原因?
我也收到了 rawResponse,这是不需要的部分。什么原因请帮帮我。
{
"paper": [{
"que": {
"qid": "1",
"question": "????????????????"
},
"ans": [{
"id": "1",
"answer": "uiuyiyityu"
}, {
"id": "2",
"answer": "ytrretwr etret"
}, {
"id": "3",
"answer": "retre retret"
}, {
"id": "4",
"answer": "rtretret"
}]
}
]
}
作为回应,我只得到 05-17 05:43:03.380 4395-getFeed > =>: {
"exam": [{
"ans": [{
"answer": "sdfdsrewwer"
}, {
"answer": "ewrewrewr"
}, {
"answer": "e"wrewrewr
}, {
"answer": "e"wrewr"
}],
"que": {
"question": "retreret retret?"
}
},
我创建了类似的 pojo
我得到 response.body().getExam().get(1).getQue().getQueId() = null
请帮帮我...
你能post你的回复码吗??
但是试试这个,
response.body().getQue().getQid()
在方法 onRespone 中。
public class MyResponseBody{private Que que;}
**Que 是对象所以你需要创建一个新对象
public class Que{private String qid;}
PS : 但是 get 方法依赖于你的 model/POJO.
首先,您的原始回复不正确。如果您将回复粘贴到 http://jsonlint.com/
您将在第 12 行遇到解析错误。甚至 jsonschema2pojo 也会在您的原始响应中显示错误。首先修改成
{
"paper": [
{
"que": {
"qid": "1",
"question": "????????????????"
},
"ans": [
{
"id": "1",
"answer": "uiuyiyityu"
},
{
"id": "2",
"answer": "ytuyutyuty"
},
{
"id": "3",
"answer": "retre retret"
},
{
"id": "4",
"answer": "rtretret"
}
]
}
]
}
然后在jsonschema2pojo 工具上制作POJO。该工具将创建四个不同的 POJO,如下所示:
import javax.annotation.Generated;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
@Generated("org.jsonschema2pojo")
public class An {
@SerializedName("id")
@Expose
private String id;
@SerializedName("answer")
@Expose
private String answer;
/**
*
* @return
* The id
*/
public String getId() {
return id;
}
/**
*
* @param id
* The id
*/
public void setId(String id) {
this.id = id;
}
/**
*
* @return
* The answer
*/
public String getAnswer() {
return answer;
}
/**
*
* @param answer
* The answer
*/
public void setAnswer(String answer) {
this.answer = answer;
}
}
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Generated;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
@Generated("org.jsonschema2pojo")
public class Paper {
@SerializedName("paper")
@Expose
private List<Paper_> paper = new ArrayList<Paper_>();
/**
*
* @return
* The paper
*/
public List<Paper_> getPaper() {
return paper;
}
/**
*
* @param paper
* The paper
*/
public void setPaper(List<Paper_> paper) {
this.paper = paper;
}
}
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Generated;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
@Generated("org.jsonschema2pojo")
public class Paper_ {
@SerializedName("que")
@Expose
private Que que;
@SerializedName("ans")
@Expose
private List<An> ans = new ArrayList<An>();
/**
*
* @return
* The que
*/
public Que getQue() {
return que;
}
/**
*
* @param que
* The que
*/
public void setQue(Que que) {
this.que = que;
}
/**
*
* @return
* The ans
*/
public List<An> getAns() {
return ans;
}
/**
*
* @param ans
* The ans
*/
public void setAns(List<An> ans) {
this.ans = ans;
}
}
import javax.annotation.Generated;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
@Generated("org.jsonschema2pojo")
public class Que {
@SerializedName("qid")
@Expose
private String qid;
@SerializedName("question")
@Expose
private String question;
/**
*
* @return
* The qid
*/
public String getQid() {
return qid;
}
/**
*
* @param qid
* The qid
*/
public void setQid(String qid) {
this.qid = qid;
}
/**
*
* @return
* The question
*/
public String getQuestion() {
return question;
}
/**
*
* @param question
* The question
*/
public void setQuestion(String question) {
this.question = question;
}
}
现在您可以通过调用 POJO 的方法轻松获取您的 qid 和 id。使用此代码块获取 qid 和 id。
Paper paper = new Paper();
List<Paper_> papers = paper.getPaper();
for(Paper_ paper_ : papers){
int qid = paper_.getQue().getQid();
List<An> answers = paper_.getAns();
for(An answer : answers){
int ansId = answer.getId();
}
}
希望它能奏效。
您的 pojo class 如下所示:
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
import java.util.ArrayList;
import java.util.List;
/**
* Created by ln-141 on 17/5/16.
*/
public class PaperClass {
@SerializedName("paper")
@Expose
private List<Paper> paper = new ArrayList<Paper>();
/**
*
* @return
* The paper
*/
public List<Paper> getPaper() {
return paper;
}
/**
*
* @param paper
* The paper
*/
public void setPaper(List<Paper> paper) {
this.paper = paper;
}
public class An {
@SerializedName("id")
@Expose
private String id;
@SerializedName("answer")
@Expose
private String answer;
/**
*
* @return
* The id
*/
public String getId() {
return id;
}
/**
*
* @param id
* The id
*/
public void setId(String id) {
this.id = id;
}
/**
*
* @return
* The answer
*/
public String getAnswer() {
return answer;
}
/**
*
* @param answer
* The answer
*/
public void setAnswer(String answer) {
this.answer = answer;
}
}
public class Paper {
@SerializedName("que")
@Expose
private Que que;
@SerializedName("ans")
@Expose
private List<An> ans = new ArrayList<An>();
/**
*
* @return
* The que
*/
public Que getQue() {
return que;
}
/**
*
* @param que
* The que
*/
public void setQue(Que que) {
this.que = que;
}
/**
*
* @return
* The ans
*/
public List<An> getAns() {
return ans;
}
/**
*
* @param ans
* The ans
*/
public void setAns(List<An> ans) {
this.ans = ans;
}
}
public class Que {
@SerializedName("qid")
@Expose
private String qid;
@SerializedName("question")
@Expose
private String question;
/**
*
* @return
* The qid
*/
public String getQid() {
return qid;
}
/**
*
* @param qid
* The qid
*/
public void setQid(String qid) {
this.qid = qid;
}
/**
*
* @return
* The question
*/
public String getQuestion() {
return question;
}
/**
*
* @param question
* The question
*/
public void setQuestion(String question) {
this.question = question;
}
}
}
检查下面屏幕截图中用于创建 pojo 的选定选项 class。