java - 如何为这个 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());
解决方案
解析时需要有一个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;
}
推荐阅读
- python - Python - 从 2 个集合中查找最接近的索引
- react-native - React native material dropdown - 如何根据下拉值呈现文本
- javascript - 如何为我的 html 表单制作验证器?
- java - 通过 PrintWriter 发布动态 HTML 表单 out.print(HTML Form) 有时不起作用
- flask-sqlalchemy - 如何在不属于我的 SQLAlchemy 模型的 Flask-Marshmallow 中添加自定义字段
- javascript - 在 React 顶级组件中分离状态相关函数
- node.js - 无法在 Hasura 中获得突变
- c# - C# Avro json 读取得到算术运算导致溢出
- angular - 使用导航无限渲染组件
- c# - 如何在 C# 中更新数据