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

Android改装转换器异常

巫煌
2023-03-14
public class RequestResponseLogin
{
   public ResponseLogin status;

   public class ResponseLogin
   {
      public boolean success;
      public List<String> message;
   }
}
{
    "status" : {
                    "success" : false
                    "message" : {
                                    "Invalid credientials",
                                    "....",
                                    "...."
                                }
                }
}
interface iLogin
{
   @GET
   RequestResponseLogin loginUser(@Query("user") String user, @Query("pass") String pass);
}

// ....
RequestResponseLogin response = data.loginUser("admin", "abc123");
message[0] = 'Invalid credentials';
message[1] = 'Invalid username';
message[2] = 'Password match correct';

但是,如果web服务器没有回复任何东西(成功登录),那么通过改型,我会得到一个异常,因为public list 消息; 是空的,web服务器回复的是一个简单的空字符串消息,而不是字符串数组。如果我将public list message; 更改为public String message;,它就可以工作,但我不能,因为如果登录失败,它必须是一个字符串数组。

共有1个答案

糜帅
2023-03-14

这与改装无关。默认情况下,Gson用于反序列化JSON响应。

由于您的服务器发回不一致的JSON结构,您应该在GSON实例上使用自定义的TypeAdapter来处理这个问题。

创建GSON实例(在本例中为“GSON”)后,可以通过它进行修改,如下所示:

RestAdapter ra = new RestAdapter.Builder()
    // ... normal stuff ...
    .setConverter(new GsonConverter(gson))
    .build();
 类似资料:
  • 问题内容: 我必须处理动态JSON响应。 之前,我使用如下类和注释: 当状态为1(成功)时,将被触发,我可以得到一个ChatResponse对象。但是,当状态为0时,响应在JSON表示中为false,并且失败(触发)。 我想创建我的自定义转换器,这个问题有一个很好的示例,但是该示例适用于Retrofit 1。 我必须创建一个extends类,但是我不知道如何重写此类的方法。 其实我有下一个: 我现

  • 但每次我都收到异常:创建@body转换器 我怎么送?或者其他我能做到的想法。您甚至可以向我提供包含json的简单参数。这对我很合适

  • 我不熟悉GSON和改装,这是我的输出模型(仅供参考结构), 这是我的输出 这是我的改装代码 应为BEGIN_对象,但为BEGIN_数组“ 我尝试过用List替换RootObject

  • 我在使用ActiveAndroid对API调用和数据库进行修改。在Pre6.0的Android设备上,一个应用程序可以很好地工作。无法确定根本原因。 改装2 Beta-4。Android6。无法创建转换器 我不明白为什么要使用gson或gsonbuilder? 感谢任何帮助。

  • 问题内容: 我的JSF页面中有p:selectOneMenu,当我运行JSF页面时,我从Converter类收到以下异常。 我该如何解决这个问题? 我在实体类中有以下内容 EmployeeConverter类 并在jsf页面中 更新1 修改的转换器方法 更新2 问题答案: 用您的方法,您无法达到自己的价值。在这里,您将收到,因此您必须将其转换为(可能必须实现使用Service locator 加载