【Android開発】Retrofit2のレスポンスを文字列として取り出す方法

Retrofit2のレスポンスを文字列として取り出す方法です。
レスポンスは例えば以下のようなイメージです。

{“error_code”:”E100001000”,”messages”:[“僕はエラーメッセージだよ”]}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Call<ResponseBody> call = client.hoge();
Response<ResponseBody> response = call.execute();
if (response.isSuccessful()) {
response.body().close();
} else {
List<String> list = getErrorMessages(response.errorBody().string());
Objects.requireNonNull(getActivity()).runOnUiThread(() -> Toast.makeText(getContext(), list.get(0), Toast.LENGTH_LONG).show());
}

/**
* APIのエラーレスポンスからmessagesを取り出してListとして返す
*/
public static List<String> getErrorMessages(String errorBody) throws JSONException {
JSONObject errorJson = new JSONObject(errorBody);
String s = errorJson.getString("messages");
s = s.replace("[", "").replace("]", "");
String[] split = s.split(",");
return Arrays.asList(split);
}

replace周りで地味にハマってしまった、、

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×