android - 当数据是字符串而不是对象时,如何在 android 中使用解析相同的 json 响应?

标签 android json observable retrofit2

当我收到响应时,成功类完美运行。但是当它失败时,它给了我错误。

URL传入失败数据时的响应:

{
  "success": -1,
  "message": "Invalid username or password",
  "data": ""
}

URL传入正确数据时的响应:

{
  "success": 1,
  "message": "User successfully logged in",
  "data": {
    "userId": 219,
    "userName": "mp",
    "picture": "219.png",
    "isBo": false,
    "isPo": true,
    "isHm": true,
    "hmProfileCompletionStatus": 3,
    "poProfileCompletionStatus": 2,
    "poPhoto": null,
    "hmPhoto": null,
    "custStripeToken": "xxx",
    "accountStripeToken": "xx",
    "bgcStatus": true,
    "idCardStatus": true,
    "isInsured": null,
    "amISponsered": false,
    "hmRating": null,
    "poRating": null,
    "email": "xxx@gmail.com"
  }
}

UserResponse.java

@Getter
@Setter
public class UserResponse{
    private int success;
    private String message;
    private User data;
}

错误

java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 64 path $.data

最佳答案

这是不可能的。在你的情况下应该是这样的

{
  "success": -1,
  "message": "Invalid username or password",
  "data": {}
}

让你的后端服务团队改成空对象,这样就可以重复使用同一个reponse对象

关于android - 当数据是字符串而不是对象时,如何在 android 中使用解析相同的 json 响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45279785/

相关文章:

angular - 错误 : "You provided ' undefined' where a stream was expected. 您可以在我的身份验证拦截器中提供 Observable、Promise、Array 或 Iterable。”

android - 如何使用 viewmodel + livedata 进行单元测试改造 api 调用?

android - android中的json like字符串解析

android - 可访问性 android 跳过导航链接不起作用

javascript - 从服务器接收对象并将其转换为客户端 Typescript (javascript) 中所需的对象

javascript - 为什么我应该使用 HttpClient 而不是 fetch?

android - 没有这个表android_metadata,有什么问题?

javascript - 仅使用异步 XHR 请求解析 JSON 时出错

javascript - jQuery.getJSON 回调中设置的变量不会保留其值

angular - 测试 Angular 2 Observable 给出 CSS 类的值