使用GSON在JSON字符串中解析具有相同标记的不同对象

时间:2014-04-29 05:39:41

标签: android json gson

我有一个REST call,它会针对成功和失败条件返回单独的 JSON&#39>

Success - {"server_method_name":"{\"Master_Tag\":{\**"Table\":[{\"CustomerID\":000000}]**}}"}

Failure - {"server_method_name":"{\"Master_Tag\":{\**"Table\" : [{\"Status\" : \"False\"}]**}}"}

区别在于"表" 标记,因为它包含不同类型的数据。 我该如何解析这个并确定" "标签包含?

我正在使用 GSON 库,这是一个Android应用程序。

编辑: 班级结构 -

解析服务器方法名称

public class ParseCustomerLoginResponseMethodName {

@SerializedName("server_method_name")
private String mMethodName;

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

/**
 * @return the methodName
 */
public String getMethodName() {
    return this.mMethodName;
}

/**
 * @param methodName the methodName to set
 */
public void setMethodName(String methodName) {
    this.mMethodName = methodName;
}

}

解析标签 -

public class ParseCustomerLoginResponseTag {

@SerializedName("Master_Tag")
private ParseCustomerLoginResponseTable mTable;

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

/**
 * @return the table
 */
public ParseCustomerLoginResponseTable getTable() {
    return this.mTable;
}

/**
 * @param table the table to set
 */
public void setTable(ParseCustomerLoginResponseTable table) {
    this.mTable = table;
}

}

解析SUCCESS结果的数据 -

public class ParseCustomerLoginResponseTable {

@SerializedName("Table")
private ArrayList<CustomerLogin> mList;

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

/**
 * @return the list
 */
public ArrayList<CustomerLogin> getList() {
    return this.mList;
}

/**
 * @param list the list to set
 */
public void setList(ArrayList<CustomerLogin> list) {
    this.mList = list;
}

}

解析ERROR响应 -

public class ParseJsonErrorResponse {

@SerializedName("Status")
private String mStatus;

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

/**
 * @return the status
 */
public String getStatus() {
    return this.mStatus;
}

/**
 * @param status the status to set
 */
public void setStatus(String status) {
    this.mStatus = status;
}

}

使用上面的类结构我可以解析SUCCESS条件。 我无法弄清楚在哪里使用ParseJsonErrorResponse类,解析ERROR条件的类结构是错误的吗?

1 个答案:

答案 0 :(得分:0)

让你的持有者类有两个属性:

public class Table(){ 
 boolean Status;
 long CustomerID;
}

你必须检查它是否为空。