【发布时间】:2017-12-20 08:21:14
【问题描述】:
你好我有Json这样的回复
[
{
"question": "hhhhh",
"question_answer": "hhhh ",
"question_type": "question type",
"questioner_age": "questioner age",
"questioner_city": "questioner city",
"questioner_country": "questioner country",
"questioner_name": "questioner name",
"questioner_sex": "questioner sex",
"comments_allowed": "1",
"question_id": "63",
"question_date": "05/08/2017 - 19:33",
"is_public": "1"
},
{
"question": "hhhh !!",
"question_answer": "hhhh",
"question_type": [],
"questioner_age": [],
"questioner_city": [],
"questioner_country": [],
"questioner_name": "hhhhh",
"questioner_sex": [],
"comments_allowed": "1",
"question_id": "57",
"question_date": "04/30/2017 - 14:24",
"is_public": "1"
}
]
如果该列为 null 将返回一个像这样的数组 "question_type": [], 如果不是将作为字符串返回!
所以我试图在改造时得到这个响应,但我失败了,总是得到这个错误
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: 预期 BEGIN_OBJECT 但在第 4 行第 2 列路径 $ 处是 BEGIN_ARRAY
在互联网上搜索后,我尝试了类似的方法,但它不起作用!
Gson gson = new Gson();
String json = response.body().toString();
if (json instanceof String)
{
MyQuestionModelString parseObject = gson.fromJson(json, MyQuestionModelString.class);
apiCallResponse.onSuccess(parseObject,responseMessage);
}else {
MyQuestionModel parseObject = gson.fromJson(json, MyQuestionModel.class);
apiCallResponse.onSuccess(parseObject,responseMessage);
}
任何帮助!
更新!
这是我的响应模型和同样的错误!!!
public class MyQuestionModel {
@SerializedName("question")
@Expose
private String question;
@SerializedName("question_answer")
@Expose
private String questionAnswer;
@SerializedName("question_type")
@Expose
private List<Object> questionType = null;
@SerializedName("questioner_age")
@Expose
private List<Object> questionerAge = null;
@SerializedName("questioner_city")
@Expose
private List<Object> questionerCity = null;
@SerializedName("questioner_country")
@Expose
private List<Object> questionerCountry = null;
@SerializedName("questioner_name")
@Expose
private String questionerName;
@SerializedName("questioner_sex")
@Expose
private List<Object> questionerSex = null;
@SerializedName("comments_allowed")
@Expose
private String commentsAllowed;
@SerializedName("question_id")
@Expose
private String questionId;
@SerializedName("question_date")
@Expose
private String questionDate;
@SerializedName("is_public")
@Expose
private String isPublic;
}
我的主要问题是如何定义这个字段!问题类型 screen shot
【问题讨论】:
-
请发布您的型号的代码。
-
Gson解析错误正确创建模型
-
我在模型中使用了pojo
-
我更新我的问题请帮忙!
标签: java android json retrofit