首页 > 解决方案 > 如何为这个 Json 文件制作模型以进行改造?

问题描述

Json 文件是:

{
  "data": [
    {
      "name": "key",
      "error": "key is not valid"
    },
    {
      "name": "package_name",
      "error": "package name is not valid"
    }
  ],
  "success": false,
  "message": "information is not valid"
}

我有一个 BaseModel,它有“ success ”、“ message ”、“ data ”,我所有的响应都是从这个 Class 扩展而来的。但是,对于来自服务器的每个响应,数据都是不同的。

到目前为止,我已经做到了:

public class BaseModel{
    private Object data;
    private boolean success;
    private String message;
}

这种错误情况下的哪些数据将转换为DataError数组:

public class DataError{
        private String name;
        private String error;
}

我得到一个错误告诉我:

java.lang.ClassCastException:com.google.gson.internal.LinkedTreeMap 无法转换为 com.example.mapp.Model.DataError

List<DataError> dataError = (List<DataError>)response.body().getData();
textView.append("Error:"+ dataError.get(0).getError());

标签: javaandroidjsoncastingretrofit

解决方案


解析时需要有一个List<DataError>,虽然也可以解析为Map. data以这种方式在Generic 中创建,BaseModel您也可以在其他类中重用它。命名它以BaseListModel使其返回一个列表。

public class BaseListModel<T>{
private List<T> data;
private boolean success;
private String message;
}

现在您可以让 API 调用返回BaseListModel<DataError>

为了解析 Object 类型的响应,您可以创建其他基类。

 public class BaseModel<T>{
 private T data;
 private boolean success;
 private String message;
}

推荐阅读