尝试将响应字符串传递给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();
                    }
                }
            });
        }
    });
}


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

最佳答案

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

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

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


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

09-10 10:16