我是Web服务的新手,我第一次使用gson库。我能够解析某些简单的json字符串,但我被困在这里。这是我的回复
{"message":"Action completed successfully.","results":3,"action":"param","data":[{"title":"test1","id":2,"completeCount":0},{"title":"test2","id":3,"completeCount":0},{"title":"test2","id":3,"completeCount":0}],"success":true}
这就是我试图解析它的方式
Gson gson = new Gson();
Chracter character = gson.fromJson(successResponse, Character.class);
这是我的班级
public class Character {
private List<Detail> data = new ArrayList<Detail>();
private String action ;
private int results;
private String message;
private Detail detail;
public Character() {
}
public Character(List<Detail> data, String action, int results,
String message) {
super();
this.data = data;
this.action = action;
this.results = results;
this.message = message;
}
public List<Detail> getData() {
return data;
}
public void setData(List<Detail> data) {
this.data = data;
}
public String getAction() {
return action;
}
public void setAction(String action) {
this.action = action;
}
public int getResults() {
return results;
}
public void setResults(int results) {
this.results = results;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public Detail getDetail() {
return detail;
}
public void setDetail(Detail detail) {
this.detail = detail;
}
public class Detail{
private String title;
private int id;
private int completeCount ;
public Detail() {
}
public Detail(String title, int id, int completeCount) {
super();
this.title = title;
this.id = id;
this.completeCount = completeCount;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public int getId() {
return Id;
}
public void setId(int id) {
this.id = id;
}
public int getCompleteCount() {
return completeCount;
}
public void setCompleteCount(int completeCount) {
this.completeCount = completeCount;
}
}
}
答案 0 :(得分:2)
请尝试以下课程进行回复。
public class Character {
/**
* Take array of class when you found "[","]" inside json response
*/
ArrayList<Data> data;
/**
* take normal values as members
*/
String action;
int results;
String message;
boolean success;
/**
* When you will use array, don't forgot to implement empty contructor,
* which initialize that array
*/
public Character() {
data = new ArrayList<Character.Data>();
}
/**
* There will be only "get" methods, no setter method used in GSON bean
*
* @return
*/
public String getAction() {
return action;
}
public String getMessage() {
return message;
}
public int getResults() {
return results;
}
public boolean getSuccess() {
return success;
}
public ArrayList<Data> getData(){
return data;
}
@Override
public String toString() {
String str = "Action : " + action + "\nMessage : " + message
+ "\nResults : " + results + "\nSuccess : " + success;
str += "\n";
for (Data d : data) {
str += "\nTitle : " + d.getTitle();
str += "\nComplete Count : " + d.getCompleteCount();
str += "\nId : " + d.getId();
}
return str;
}
/**
* as you have => "data":[...] => in your json response, you need to create
* a class for that
*/
public class Data {
/**
* take normal values as members
*/
private String title;
private int id;
private int completeCount;
public String getTitle() {
return title;
}
public int getId() {
return id;
}
public int getCompleteCount() {
return completeCount;
}
}
}
<强>输出强>
要打印输出,请使用以下代码。我有覆盖 toString()功能。
Gson gson = new Gson();
Character character = gson.fromJson(strResponse, Character.class);
Log.d("Home", character.toString());
08-30 15:36:59.279:DEBUG / Home(10022):行动:param
08-30 15:36:59.279:DEBUG / Home(10022):消息:操作成功完成。
08-30 15:36:59.279:DEBUG / Home(10022):结果:3
08-30 15:36:59.279:DEBUG / Home(10022):成功:真实 08-30 15:36:59.279:DEBUG / Home(10022):标题:test1
08-30 15:36:59.279:DEBUG / Home(10022):完成数:0
08-30 15:36:59.279:DEBUG / Home(10022):Id:2
08-30 15:36:59.279:DEBUG / Home(10022):标题:test2
08-30 15:36:59.279:DEBUG / Home(10022):完成数:0
08-30 15:36:59.279:DEBUG / Home(10022):Id:3
08-30 15:36:59.279:DEBUG / Home(10022):标题:test2
08-30 15:36:59.279:DEBUG / Home(10022):完成数:0
08-30 15:36:59.279:DEBUG / Home(10022):Id:3