Gson不解析json字符串

hgqdbh6s  于 2022-11-23  发布在  其他
关注(0)|答案(2)|浏览(167)

现在我正在做一个Android SDK项目,代码太旧了,我尝试使用okhttp3从服务器收集数据。通过使用下面的函数,我能够从服务器收集响应。

String json = requestGetString(url);

    public String requestGetString(String uri) throws IOException {
    Response res = null;
    try {
        res = getStringHttp(host+uri);
        System.out.println(res.body().string());
        return res.body().string();
    }catch (NullPointerException e) {
        //body = null ??
        throw new IOException(e);
    } catch (IOException e) {
        throw new IOException(e);
    }finally {
        if(res != null){
            try{
                res.close();
            }catch (NullPointerException e){
                //body = null ??
                throw new IOException(e);
            }
        }
    }

}

我正在接收Json,但无法使用数据类解析它。
如下所示

AuthAppResponse result = parseJson(path, json, AuthAppResponse.class);

你可以看看我的解析器函数

private <TResponse> TResponse parseJson(String path, String json, Class<TResponse> responseClass) throws IOException
{
    return parseJson(getGson(), path, json, responseClass);
}

而这,

private <TResponse> TResponse parseJson(Gson gson, String path, String json, Class<TResponse> responseClass) throws IOException
{
    try
    {
        return gson.fromJson(json, responseClass);
    }
    catch (JsonSyntaxException e)
    {
        throw new IOException("The response from '" + path + "' failed to be parsed as JSON.\ncontent = " + json, e);
    }
}

什么也没发生。
和相同的SDK与最新的代码库,它的工作与相同的代码很好。任何人都有一个想法,以找出可能的解决方案,这一点。请分享您的评论。

h4cxqtbf

h4cxqtbf1#

okhttp响应主体只能使用一次。您将使用它两次。首先在:

System.out.println(res.body().string());

然后在

return res.body().string();
oo7oh9g9

oo7oh9g92#

最后,我发现我的代码中缺少的部分,我错过了在旧项目中添加一个proguard文件,这就是为什么Gson不解析响应

相关问题