Android 如何使用GSON解析嵌套的JSON
我目前正在使用volley发出一个get请求,在onResponse中,我试图使用gson将jsonObject解析到我的模型中 发出请求后返回的JSON:Android 如何使用GSON解析嵌套的JSON,android,json,gson,android-volley,Android,Json,Gson,Android Volley,我目前正在使用volley发出一个get请求,在onResponse中,我试图使用gson将jsonObject解析到我的模型中 发出请求后返回的JSON: { "success": 1, "message": "Done", "data": { "company": "companyname", "email": "email", "color": "#ffffff", "
{
"success": 1,
"message": "Done",
"data": {
"company": "companyname",
"email": "email",
"color": "#ffffff",
"text_color": "#000000",
"background_image": "BITMAP ENCODED",
"logo": "BITMAP ENCODED",
"enable_health_and_safety": 0,
"health_and_safety": "",
"sign_in_button_text": "SIGN IN",
"sign_out_button_text": "SIGN OUT",
"enable_picture": 0,
"package_type": "TRIAL",
"created_at": "2017-03-06 12:21:23",
"updated_at": "2017-03-06 12:21:23",
"telephone": "",
"auto_sign_out": 0,
"sign_out_time": "",
"enable_printing": 0
}
}
我的模型
public class ClientResponseModel implements Serializable {
private String success;
private String message;
private ClientData clientData;
public String getSuccess() {
return success;
}
public void setSuccess(String success) {
this.success = success;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public ClientData getClientData() {
return clientData;
}
public void setClientData(ClientData clientData) {
this.clientData = clientData;
}
public class ClientData implements Serializable {
private String company;
private String email;
private String client_color;
private String text_color;
private String background_image;
private String logo;
private int enable_health_and_safety;
private String health_and_safety;
private String sign_in_button_text;
private String sign_out_button_text;
private int enable_picture;
private String package_type;
private String created_at;
private String updated_at;
private String telephone;
private int auto_sign_out;
private String sign_out_time;
private int enable_printing;
//all the getters and setters for above
}
我的onResponse函数
final JsonObjectRequest getClientData = new JsonObjectRequest(Request.Method.GET, clientUrl, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.i("getUserDataOnResponse", response.toString());
Gson gson = new Gson();
ClientResponseModel clientResponseModel = gson.fromJson(response.toString(), ClientResponseModel.class);
Log.i("sucess",clientResponseModel.getSuccess());
Log.i("message",clientResponseModel.getMessage());
Log.i("company",clientResponseModel.getClientData().getEmail());
}
我不确定我可能做错了什么,例如,我已经查看了几个链接
提前感谢您的帮助。我有一个非常简单的方法: 首先,创建主模型: 另一个是“数据” //为变量创建getter和setter 然后,当您得到json时,按如下方式解析它:
Gson gson = new Gson();
Type CollectionType = new TypeToken<FeedBackModel>() {
}.getType();
FeedBackModel FeedBack = gson.fromJson(json, CollectionType);
Gson-Gson=new-Gson();
Type CollectionType=new-TypeToken(){
}.getType();
FeedBackModel FeedBack=gson.fromJson(json,CollectionType);
我有一个非常简单的方法:
首先,创建主模型:
另一个是“数据”
//为变量创建getter和setter
然后,当您得到json时,按如下方式解析它:
Gson gson = new Gson();
Type CollectionType = new TypeToken<FeedBackModel>() {
}.getType();
FeedBackModel FeedBack = gson.fromJson(json, CollectionType);
Gson-Gson=new-Gson();
Type CollectionType=new-TypeToken(){
}.getType();
FeedBackModel FeedBack=gson.fromJson(json,CollectionType);
您的代码中有一点错误。因此您应该将ClientData ClientData更改为ClientData。然后您可以获取数据。希望这将有助于您进行分析。您的代码中有一个小错误。因此,您应该将ClientData ClientData更改为ClientData。然后您可以获得数据。希望这将有助于您解析。如用户1912026所述,更改如下
private ClientData data;
并更改setter和getter,如下所示
public ClientData getClientData() {
return data;
}
public void setClientData(ClientData clientData) {
this.data = clientData;
}
如user1912026所述,更改如下
private ClientData data;
并更改setter和getter,如下所示
public ClientData getClientData() {
return data;
}
public void setClientData(ClientData clientData) {
this.data = clientData;
}
JSONObject response
然后gson.fromJson(response.toString()…
解析json两次…真是浪费资源谢谢你的评论,首先我是学习者,错误地学习,所以我接受你的建议,并将使我的代码更好,其次,留下的评论可以是帮助精神而不是批评,如果留下评论,请留下一个答案,就像你会做的那样,所以至少其他pe人们可以学习。@Selvintry@SerializedName(“数据”)@Expose private ClientData ClientData;
否则您将不得不对每个字段使用注释hi@PavneetSingh谢谢您的评论,如前所述,我只是在学习。就我所知,请您解释一下我如何实现它。我将在哪里实现Expose private ClientData ClientData;?我说得对吗SerializeName(“data”)位于专用ClientData ClientData之上;而Expose语句将位于ClientData类之上?\n
表示输入@SerializedName(“data”)\n@Expose\n private ClientData ClientData;
,我不确定它是否能工作JSONObject response
然后gson.fromJson(response.toString()…
解析json两次…真是浪费资源谢谢你的评论,首先我是学习者,错误地学习,所以我接受你的建议,并将使我的代码更好,其次,留下的评论可以是帮助精神而不是批评,如果留下评论,请留下一个答案,就像你会做的那样,所以至少其他pe人们可以学习。@Selvintry@SerializedName(“数据”)@Expose private ClientData ClientData;
否则您将不得不对每个字段使用注释hi@PavneetSingh谢谢您的评论,如前所述,我只是在学习。就我所知,请您解释一下我如何实现它。我将在哪里实现Expose private ClientData ClientData;?我说得对吗SerializeName(“data”)位于专用ClientData ClientData之上;而Expose语句将位于ClientData类之上?\n
表示输入@SerializedName(“data”)\n@Expose\n private ClientData ClientData;
,我不确定它是否有效