尝试将响应字符串传递给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();
如果我的代码对您不起作用,那么这个问题本身甚至可能导致对该问题有所了解。