android - 从 retrofit 响应中删除不需要的字符串

标签 android json exception response retrofit2

我想从我的 retorfit2 POST 请求响应中删除字符串。

这是我的回复:

  /*-secure-{"response":{"response":{"response":{"token":"95a2c5a8","email":"xxx@sample.in","name":"xxx"},"status":true,"code":0.0},"status":200},"status":200}*/

由于某些安全原因,我的服务器自动添加了字符串

/*-secure-*/

因为这个,在转换为 json 时,我得到以下错误:

 com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 2 path $

最佳答案

我的自定义 gson 转换器类

    final class CustomGsonResponseBodyConverter<T> implements Converter<ResponseBody, T> {
    private final Gson gson;
    private final TypeAdapter<T> adapter;
    private Pattern pattern = Pattern.compile("^\\/\\*-secure-\\W(.*)\\*\\/$");

    CustomGsonResponseBodyConverter(Gson gson, TypeAdapter<T> adapter) {
        this.gson = gson;
        this.adapter = adapter;
    }

    @Override
    public T convert(ResponseBody value) throws IOException {
        String response = value.string();
        System.out.println(response);
        Matcher matcher = pattern.matcher(response);

        JsonReader jsonReader = gson.newJsonReader(new StringReader(matcher.group(1)));
        try {
            return adapter.read(jsonReader);
        } finally {
            value.close();
        }
    }
}

关于android - 从 retrofit 响应中删除不需要的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41745704/

相关文章:

json - 如何使用 Beautiful Soup4 从 Twitter 用户个人资料中获取位置?

c++ - 抛出奇怪的异常 : getting the height of a sprites image in SFML

javascript - 我如何以编程方式在 native react 中发送短信?

android - 使用 C++ 在 android 中理解和实现 native 绑定(bind)器

Android listview图片加载问题

c# - 如何在 C# 中捕获另一个进程的运行时异常?

java - 如何捕获Java中Catch block 中发生的异常

java - StringBuffer 是如何工作的?为什么要这样做?

json - Json.NET 中的异常 : Token PropertyName in state "Start" would result in an invalid JavaScript object

json - 从命令行参数生成 JSON