传递 http 响应时,java.lang.String 类型的值无法转换为 JSONObject
Value of type java.lang.String cannot be converted to JSONObject when passing http response
我在尝试将响应字符串传递给 JSON 对象时收到 "Value of type java.lang.String cannot be converted to 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();
如果我的代码不适合您,这个问题本身甚至可能让您对问题有所了解。
它改变了
final String myResponse = response.body().toString();
为了
final String myResponse = response.body().string();
我在尝试将响应字符串传递给 JSON 对象时收到 "Value of type java.lang.String cannot be converted to 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();
如果我的代码不适合您,这个问题本身甚至可能让您对问题有所了解。
它改变了
final String myResponse = response.body().toString();
为了
final String myResponse = response.body().string();