如何使用公共外部主体维护JSON的通用模型类?

时间:2016-11-14 10:32:34

标签: android json gson

我为所有网络服务响应维护了以下格式:

{
    "status": "Status Code",
    "description": "Success/Failure Message",
    "data": {
        "response_object": {},
        "response_array": []
    }
}

我使用GSON使用以下模型类解析它:

JSONResponse:

public class JSONResponse {


    @SerializedName("status")
    private String status;

    @SerializedName("data")
    private Data data;

    @SerializedName("description")
    private String description;

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public Data getData() {
        return data;
    }

    public void setData(Data data) {
        this.data = data;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }
}

数据:

public class Data {

    @SerializedName("response_object")
    private ResponseObject responseObject;

    @SerializedName("response_array")
    private List<ORCResponse> orcResponses = new ArrayList<>();

    public ResponseObject getResponseObject() {
        return responseObject;
    }

    public List<ORCResponse> getOrcResponses() {
        return orcResponses;
    }
}

将JSON转换为Model对象:

Gson gson = new Gson();
JSONResponse jsonResponse = gson.fromJson(receivedJSON, JSONResponse.class);

现在,问题是数据元素下的JSON格式可能会根据Web服务而改变。

我的疑问:

  1. 是否可以使用不同的模型解析内部JSON 取决于Web服务响应?
  2. 我使用了错误的方法吗? 我这样做的原因是 - 我想根据状态解析数据并避免代码重复。

1 个答案:

答案 0 :(得分:0)

如果您的数据元素发生更改但Data类具有所需的所有可用字段,您仍然可以使用相同的响应。但是,您必须发送数据字段。即使是案件中的空洞反应。

使用InstanceOF确定您的实例并做相应的操作。

if(param instanceof Object) {
System.out.println("param is a Object");
}
else if( param instanceof String[]) {
  System.out.println("param is String array");
}

希望它有所帮助,干杯!