2014-02-04 5 views
2

У меня есть следующие JSON отформатированную строку, которая возвращается из веб-службы:Преобразование JSON строки в словарь в Android

{"Success":false,"Message":"This version is not supported"} 

Я использую следующий код для вызова веб-службы:

AsyncHttpClient client = new AsyncHttpClient(); 

client.get("http://mywebsite/check/getcompatibilityinfo", new AsyncHttpResponseHandler() { 
    @Override 
    public void onSuccess(String response) { 
     System.out.println(response); 
    } 
}); 

Ответ содержит строку json, теперь мне нужно получить доступ к свойству Success и Message. Есть ли простой способ сделать это без использования сложных сторонних библиотек?

+0

response.optString («Успех») будет работать здесь. Не становится легче, чем это. :) –

+0

optString не определен !!! –

+0

Ответ, который вы получите, должен быть JSONObject правильно? На этом вызове response.optString. Если ваш JSON - это выше, он будет работать. –

ответ

9

Класс JSONObject уже доступен в вашей кодовой базе Android (без зависимостей сторонних разработчиков). Так как ваш пример использует обычный (простой) JSON, вы можете использовать:

try { 
    JSONObject responseJSON = new JSONObject(response); 
} catch (JSONException e) { 
    e.printStackTrace(); 
} 

boolean success = responseJSON.getBoolean("Success"); 
String message = responseJSON.getString("Message"); 
+0

вы можете добавить некоторые защитные коды и проверить, что объект существует первым: if (! ResponseJSON.isNull («Успех») {boolean success = responseJSON (getBoolnea («Успех»)}; – Martin

+0

... а также проверка для исключения при вызове конструктора для JSONObject :) – Melquiades

+0

Да, я упакован в блоки try/catch, и теперь все в порядке. Я удивлен, что Java заставит меня включить блоки try/catch. Это безумие! –

Смежные вопросы