Skip to content

okhttp json 美化输出

java
/**
 * @ref {@link okhttp3.logging.HttpLoggingInterceptor}
 */
public class PrettyJsonResponseInterceptor implements Interceptor {
    private static final Gson gson = new GsonBuilder().setPrettyPrinting().create();

    @NonNull
    @Override
    public Response intercept(@NonNull Chain chain) throws IOException {
        Response response = chain.proceed(chain.request());
        ResponseBody responseBody = response.body();
        if (responseBody != null) {
            MediaType contentType = responseBody.contentType();
            if (contentType != null && "application/json".equals(contentType.toString())) {
                Buffer buffer = responseBody.source().getBuffer();
                String bodyString = buffer.clone().readString(StandardCharsets.UTF_8);
                JsonElement jsonElement = JsonParser.parseString(bodyString);
                String prettyJsonString = gson.toJson(jsonElement);
                Timber.d("<-- Pretty print json body: \n%s", prettyJsonString);
            }
        }
        return response;
    }
}