使用Moshi破坏服务器响应处理

时间:2017-11-03 17:40:47

标签: android json moshi

服务器的预期json响应应为:

{
  "teacher": {
    "123": {
      "_id": "389",
      "name": "test_fast_teacher1"
    }
  }
}

服务器返回json:

{
  "teacher": [

  ]
}

无论如何要处理这个破碎的json响应? 在我从Gson切换之前,教师对象仍将被反序列化,只是它将为null。通过使用Moshi,错误将被抛出,我无法继续正确序列化的其他json。

请参阅the link以获取作者的回复。

1 个答案:

答案 0 :(得分:1)

这样的事情怎么样?

Moshi moshi = new Moshi.Builder()
    .add(DefaultOnDataMismatchAdapter.newFactory(Teacher.class, null))
    .build();

JsonAdapter<Teacher> adapter = moshi.adapter(Teacher.class);

Teacher teacher = adapter.fromJson(json);
// teacher == null

其中DefaultOnDataMismatchAdapterJesse's code you can copy into your code base.

当教师类型以意外格式返回时会产生JsonDataException,它将默认返回到您的设置值(在本例中为null)。