java处理与改型不一致的API响应
我在新项目中面临一个问题。我正在连接一个API,它可以根据一些服务器逻辑在一个响应中响应两种不同的数据类型。我在Android上使用改型,我想知道在改型对象解析之前是否有一些“简单”的方法来处理这种情况,例如,某种解析器/序列化程序,可以检查什么类型有特定的JSON字段?我不知道
以下是可能的答复:
错误响应:
{
"ReturnCode": "error",
"ReturnCodeNumber": 444,
"ReturnMessage": "Invalid Request",
"ReturnData": ""
}
数据响应:
{
"ReturnCode": "ok",
"ReturnCodeNumber": 0,
"ReturnMessage": "success",
"ReturnData": [
{
}
]
}
改装API请求:
@FormUrlEncoded
@POST("url")
Observable<ApiResponse<List<Data>>> requestData()
API响应类公开了上述响应的字段,并为returnData
参数化了T
那么,是否有可能以某种方式将其包装到某个序列化程序类中
# 1 楼答案
您必须编写自定义反序列化程序或注册类型适配器,如本节所述-
https://sites.google.com/site/gson/gson-user-guide#TOC-Custom-Serialization-and-Deserialization
# 2 楼答案
尝试使用
TypeAdapterFactory
来执行此操作。该类的示例如下所示这个Gson进入了RestaAdapter