Как сделать JSON-аннотацию Moshi без учета регистра в Android - PullRequest
0 голосов
/ 16 октября 2018

Иногда мой сервер возвращает электронную почту, а иногда - электронную почту.Я хочу, чтобы первый символ был без учета регистра.Возможно ли это?

public class GetConversationListResponseBody {
    @Keep
    @Json(name = "email")
    private String email;    
}

1 Ответ

0 голосов
/ 17 октября 2018

Нет встроенного обобщенного способа сделать это.

Если вам нужно это для одного случая, пользовательский адаптер тривиален.

public static final class GetConversationListResponseBody {
  public final String email;

  GetConversationListResponseBody(String email) {
    this.email = email;
  }
}

static final class InternalGetConversationListResponseBody {
  String email;
  String EMAIL;

  static final Object ADAPTER = new Object() {
    @FromJson GetConversationListResponseBody fromJson(
        InternalGetConversationListResponseBody json) {
      String email = json.email != null ? json.email : json.EMAIL;
      return new GetConversationListResponseBody(email);
    }
  };
}

@Test public void getConversationListResponseBody() throws IOException {
  Moshi moshi = new Moshi.Builder()
      .add(InternalGetConversationListResponseBody.ADAPTER)
      .build();
  JsonAdapter<GetConversationListResponseBody> adapter = moshi.adapter(GetConversationListResponseBody.class);
  assertThat(adapter.fromJson("{\"email\":\"e@gmail.com\"}").email).isEqualTo("e@gmail.com");
  assertThat(adapter.fromJson("{\"EMAIL\":\"e@gmail.com\"}").email).isEqualTo("e@gmail.com");
}
...