2016-05-07 4 views
1

Что мне нужно сделать просто - я использовал OKHttp, чтобы получить JSON-кодированный ответ с моего сервера, и мне нужно разобрать простой (одномерный) ответ 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"}

+0

Ваш пункт улова не имеет каких-либо исключений в этом ... Android-студия может автоматически выполнить это для вас –

ответ

2

Вы забыли преобразовать этот ответ в строку. Все, что вам нужно сделать, это следующее:

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

JSONObject jj = new JSONObject(stringResponse); 
+0

я думаю, вы поняли вопрос. Хотя вы правы, см. Мой комментарий выше –

+0

Да, я думаю, что неправильно понял. Я видел только преобразование строки. Необработанное исключение приходит из-за неопределенного предложения catch. – Dhaval

0

бросает JSONException

добавить эту строку в ваш метод. и преобразуйте свой ответ в String.

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

также ваш блок блокировки является неправильным. если броски здесь неверны, тогда это будет правильное объявление. блока try и catch. добавьте, наконец, в случае необходимости.

try { 

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

Изменить положение поймать поймать исключение, как это:

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

Необработанное исключение: org.json.JSONException

Ясно сказано, что вы не обрабатывает это проверено исключение. Вот как вы перехватываете исключения.

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