Java 从JSON响应中获取值
我需要完成的事情很简单——我使用OKHttp从我的服务器获取一个JSON编码的响应,我需要解析一个简单的(一维)JSON响应以提取单个值 我已经写了一个简单的代码片段,但是我得到了一个错误 以下是OKHttpClient的代码,以备不时之需:Java 从JSON响应中获取值,java,android,json,okhttp,Java,Android,Json,Okhttp,我需要完成的事情很简单——我使用OKHttp从我的服务器获取一个JSON编码的响应,我需要解析一个简单的(一维)JSON响应以提取单个值 我已经写了一个简单的代码片段,但是我得到了一个错误 以下是OKHttpClient的代码,以备不时之需: OkHttpClient client = new OkHttpClient(); RequestBody formVars = new FormBody.Builder().add(..vars..).build(); Request request =
OkHttpClient client = new OkHttpClient();
RequestBody formVars = new FormBody.Builder().add(..vars..).build();
Request request = new Request.Builder().url(url).post(formVars).build();
Response response = null;
try {
response = client.newCall(request).execute();
JSONObject jj = new JSONObject((Map) response.body());
String e = jj.getString("status");
} catch {
...
}
我得到的错误(红线)在jj.getString(“状态”)下代码>:
未处理的异常:org.json.JSONException
JSON字符串只是
{“status”:“1”}
您忘记将该响应转换为字符串。您只需执行以下操作:
String stringResponse = response.body().string();
JSONObject jj = new JSONObject(stringResponse);
抛出JSONException
将上面的行添加到您的方法中。并将您的响应转换为字符串
JSONObject objJsonObject = new JSONObject(response.body().toString());
System.out.println(objJsonObject.getString("status"));
你的挡块也错了。如果此处的throws不正确,那么这将是正确的声明。试抓拦网。如果需要,最后添加
try {
} catch (JSONException e) {
// TODO: handle exception
}
更改catch子句以捕获异常,如下所示:
try {
response = client.newCall(request).execute();
JSONObject jj = new JSONObject((Map) response.body());
String e = jj.getString("status");
} catch(Exception e) {
e.printStackTrace();
}
未处理的异常:org.json.JSONException
明确说明您没有处理这个已检查的异常,这就是您捕获异常的方式
try {
....
} catch (JSONException ex) {
ex.printStackTrace();
}
您的catch子句中没有任何例外。。。Android Studio可以自动为您完成这一任务我想您误解了这个问题。虽然你是对的,请看我上面的评论是的,我想我误解了。我只看到了字符串转换。由于未定义catch子句,未处理的异常到达。