2015-07-15 8 views
-3

У меня есть этот массив для моего веб-сервиса: { «обновление»: true «MSG»: «Помнить Бро», «роль»: «админ»}Нужна помощь при форматировании массива JSON

Теперь я нужно использовать это в Android для работы над моим приложением вне входа. Так что мне нужно здесь, это способ отформатировать эти данные в namevaluepairs или отдельные переменные, чтобы я мог их использовать.

настоящее время я использую это, но это сила закрывает мое заявление:

try { 

      JSONObject jsonRootObject = new JSONObject(result); 

      //Get the instance of JSONArray that contains JSONObjects 
      JSONArray jsonArray = jsonRootObject.optJSONArray(""); 

      //Iterate the jsonArray and print the info of JSONObjects 
      for(int i=0; i < jsonArray.length(); i++){ 
       JSONObject jsonObject = jsonArray.getJSONObject(i); 

       update = jsonObject.optString(jsonObject.optString("update").toString()); 
       message = jsonObject.optString("msg").toString(); 
       role = jsonObject.optString(jsonObject.optString("role").toString()); 


      } 

     } catch (JSONException e) {e.printStackTrace();} 
+0

какая линия вызывает сбой? –

+0

json не содержит массива (не имеет []) – ligi

+0

поэтому в предоставленном json массиве нет, существует только один JSONObject, содержащий 3 значения: boolean «update» и две строки: «msg» и «role « –

ответ

1

Для разбора JSON вы предоставили вам нужно что-то вроде этого:

JSONObject jsonObject = new JSONObject(jsonString); 

    update = jsonObject.optBoolean("update"); 
    message = jsonObject.optString("msg"); 
    role = jsonObject.optString("role"); 
+0

Это сработало для меня, спасибо большое! : D –

1

я предполагаю result содержит ваш JSON в виде String:

{"update":true,"msg":"Logged in Bro","role":"admin"} 

Таким образом,

JSONObject jsonRootObject = new JSONObject(result); 

создает объект JSON с тремя свойствами, update, msg и role. Вы можете получить доступ к ним, как это:

boolean update = jsonRootObject.optBoolean("update"); 
String msg = jsonRootObject.optString("msg"); 
String role = jsonObject.optString("role"); 

Ваш код аварии на jsonArray.length() потому что jsonArray == null: jsonRootObject.optJSONArray(""); возвращается null, как не существует массив с ключом "" в пределах объекта.


optString("msg").toString(); 

нелогично само по себе. optString либо возвращает String, либо null. Ваш код сработает, если свойство msg нет. Если вы ожидаете, что недвижимость будет присутствовать, используйте getString вместо optString. В общем, не звоните toString() по телефону String.


jsonObject.optString(jsonObject.optString("role").toString()); 

не имеет смысла либо. В объекте нет ключа, который равен значению свойства role.

+0

Мне понравилось, как вы описательно объяснили мне код. Действительно ценю это. Использовал и отметил вышеупомянутую помощь уже так не мог отметить ваш как правильный ответ, но это была большая помощь, и я надеюсь, что люди узнают об этом. Благодарю. –

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

  • Нет связанных вопросов^_^