传递http响应时无法将类型java.lang.String的值转换为JSONObject

问题描述 投票:1回答:2

尝试将响应字符串传递给JSON对象时,出现“无法将类型为java.lang.String的值转换为JSONObject的错误”错误。我过去曾尝试过类似的方法,但确实有效,所以我不知道为什么会这样。

这里是代码

public void searchMovie(){
    OkHttpClient client = new OkHttpClient();
    url = Constants.moviebaseurl + mEdit.getText();

    Request request = new Request.Builder()
            .url(url)
            .build();

    client.newCall(request).enqueue(new Callback() {
        @Override
        public void onFailure(@NotNull Call call, @NotNull IOException e) {
            e.printStackTrace();
        }

        @Override
        public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
            final String myResponse = response.body().toString();

            SearchActivity.this.runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    try {
                        JSONObject json = new JSONObject(myResponse);
                        JSONArray results = json.getJSONArray("results");
                        mText.setText(results.getJSONObject(0).getString("title"));
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            });
        }
    });
}

我是在做错什么,还是我只是想念什么?谢谢您的帮助!

android json json.net warnings okhttp
2个回答
1
投票

通过引用this question,我找到了这个答案

使用google-gson,您可以这样操作:

JsonObject obj = new JsonParser().parse(myResponse).getAsJsonObject();

如果我的代码对您不起作用,这个问题本身甚至可能导致对该问题有所了解。


0
投票

它改变了工作原理

final String myResponse = response.body().toString();

for

final String myResponse = response.body().string();
© www.soinside.com 2019 - 2024. All rights reserved.