从JSON响应中获取价值

时间:2016-05-07 07:55:27

标签: java android json okhttp

我需要完成的工作很简单 - 我使用OKHttp从我的服务器获取JSON编码的响应,我需要解析一个简单的(一维)JSON响应来提取单个值。

我写了一段简单的代码片段,但是我收到了错误。

以下是OKHttpClient的代码,如果重要的话:

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("status");

之下

Unhandled exception: org.json.JSONException

JSON字符串很简单 {"status":"1"}

4 个答案:

答案 0 :(得分:2)

您忘记将该响应转换为字符串。您需要做的就是:

String stringResponse = response.body().string();

JSONObject jj = new JSONObject(stringResponse);

答案 1 :(得分:0)

  

抛出JSONException

将以上行添加到您的方法中。并将您的响应转换为String。

JSONObject objJsonObject = new JSONObject(response.body().toString());
System.out.println(objJsonObject.getString("status"));

你的捕获块也是错误的。如果这里的投掷不正确,那么这将是正确的声明。尝试和捕获块。如果需要,最后添加。

try {

} catch (JSONException e) {
    // TODO: handle exception
}

答案 2 :(得分:0)

更改catch子句以捕获这样的异常:

try {
      response = client.newCall(request).execute();
      JSONObject jj = new JSONObject((Map) response.body());
      String e = jj.getString("status");
} catch(Exception e) {
      e.printStackTrace();
}

答案 3 :(得分:0)

  

未处理的异常:org.json.JSONException

清楚地说明您没有处理此检查的异常,这就是您捕获异常的方法。

try {
....
} catch (JSONException ex) {
  ex.printStackTrace();
}