当前位置: 首页 > 知识库问答 >
问题:

使用Rethfit检查哪种类型的数据作为响应

聂翼
2023-03-14

当我使用改型时,我已经设计了所有的POJO,它工作得完美无缺。API的设计方式是,如果数据是当前日期或未来日期的,但不是过去日期的,它将发送所需的数据。在响应中,我将得到一个包含JSON对象和数组的组合的JSON响应,作为一个JSON对象的值,POJO是根据这个值。现在,如果没有关于当前和未来日期的记录,那么我将接收一个字符串而不是数组,这将导致API错误java.lang.IllegalStateException:Expected BEGIN_ARRAY但was string。所以我想知道的是,如果有什么方法,我可以确定,我收到的是数组还是字符串?以及如何根据此更新POJO以避免此错误。

服务器没有数据时的JSON响应

{
"Result_Code": "ND",
"Result_Status": "Success",
"Result_Message": "No record found in database.",
"Result_Output": "",
"updatedDate": "20-07-2017 10:44:37"
}

当服务器有数据时,JOSN响应将是相同的,但有一点不同

{
 "Result_Code": "ND",
 "Result_Status": "Success",
 "Result_Message": "record found in database.",
 "Result_Output": [{multiple elements},
                   {multiple elements},
                   {multiple elements}....],
 "updatedDate": "20-07-2017 10:44:37"
 }

共有1个答案

戈正初
2023-03-14

名为responseModel的Pojo类

public class ResponseModel {
private String Result_Code;
private String Result_Status;
private String Result_Message;
private Object Result_Output;
private String updatedDate;
...
}

使用object,您可以如下所示进行变形

call.enqueue(new Callback<ResponseModel>() 
{
  @Override
  public void onResponse(Response<ResponseModel> response, Retrofit retrofit)
   {
     parseData();     //  get other data from ResponseModel Class
     if (response.getResultOutput() instanceof List<POJO>)
     {
       doSomething();
     }
      else if (response.getResultOutput() instanceof String)
     {
       doSomething();
     }
     else  //must be error object
     {
       doSomething();
     }
  }

@Override
public void onFailure(Throwable t) 
{
 ///Handle failure
}
});

使用instanceof检查所需的对象类型

其中list 用于多个元素model*检查更新的解决方案,以便从响应对象解析ArrayList希望它可以按您的要求工作

 类似资料:
  • 问题内容: Oracle JDBC驱动程序将哪些Java数据类型分配给Oracle SQL数据类型?这是否随类型的大小而变化? 问题答案: 正如其他人已经说过的:驱动程序将所有内容都映射到BigDecimal,即使将其定义为NUMBER(38)(可以将其映射到BigInteger)也是如此。 但是找出驱动程序映射很容易。只需在ResultSet的列上执行getObject(),然后查看驱动程序生成

  • 问题内容: 我正在尝试决定要选择哪种mime类型来返回mp3数据(由php提供) 根据此mime类型列表:http : //www.webmaster-toolkit.com/mime-types.shtml 这些之间有什么区别,我应该使用哪个? 问题答案: 最好的选择是使用RFC定义的 mime-type 。

  • 问题内容: 这个问题已经在这里有了答案 : 9年前关闭。 可能重复: 如何在mySQL中存储IP 我想从中获取IP地址和其他一些变量,哪种数据类型是正确的呢? 是吗 问题答案: 由于IPv4地址的长度为4个字节,因此可以使用正好为4个字节的(): 而与它们转换: 对于IPv6地址,您可以改用: 并使用PHP和进行转换:

  • 问题内容: 我读过我应该用 钱 ,但是在当今快节奏的世界里,现在也许已经过时了。 我应该使用什么? 问题答案: 不,钱应该还是可以的。

  • 问题内容: 如何确定Jquery中Ajax调用的响应类型?有时,服务器发送json响应,有时仅发送html进行显示。现在我正在使用 问题答案: 您可以尝试如下操作: 基本上也使用indexOf,但似乎更可靠。

  • 我想使用泛型类作为另一个泛型类的类型参数。 起初,我对类的定义是这样的: 然后我的需求发生了变化,我不得不为我的R类型使用包装器/持有者类 到目前为止,我的尝试:(给出编译时错误: