2016-08-21 2 views
0

Я пытаюсь извлечь и обработать некоторые данные JSON, но это ошибка при попытке. Это мой код:Ошибка преобразования JSONArray в JSONObject

protected void onPostExecute(String s) { 
    String err=null; 
    try { 
     JSONObject root = new JSONObject(s); 
     JSONObject user_data = root.getJSONObject("user_data"); 
     LASTNAME = user_data.getString("lastname"); 
     PASSWORD = user_data.getString("password"); 
     EMAIL = user_data.getString("email"); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
     err = "Exception: "+e.getMessage(); 
    } 
    Intent i = new Intent(ctx, MainActivity.class); 
    i.putExtra("lastname", LASTNAME); 
    i.putExtra("email", EMAIL); 
    i.putExtra("password", PASSWORD); 
    i.putExtra("err", err); 
    startActivity(i); 
} 

Но это ошибка:

org.json.JSONException: Value [] at user_data of type org.json.JSONArray cannot be converted to JSONObject

error output

+0

, что значение корня в LogCat –

+0

может у вставить LogCat с некоторым log.d ("rootval", корень); –

+0

добавить свой отзыв здесь тоже? то мы можем помочь. –

ответ

-1

Похоже, ваш «user_data» подходит в качестве JSon массива вместо объекта JSON, который вы пытаетесь для доступа.

Вы можете использовать root.optJSONObject("user_data"), чтобы определить & return json object, если ваш user_data является объектом json или возвращает null.

+0

Как я могу это сделать root.optJSONObject ("user_data") не работает –

1

Я думаю, что у вас есть проблема с литьем массива в объект.

[..] означает, что это JSONArray.

{..} означает, что это JSONObject.

try { 
    JSONArray jObj = new JSONArray(json); 
    //This is how you get value from 1 element in JSONArray 
    String firstObjectValue = jObj.getString(0); 

} catch (JSONException e) { 
    Log.e("JSON Parser", "Error parsing data " + e.toString()); 
} 

Если вы ищете значение нужно, чтобы перебирать все JSONArray , выполнив несколько простых цикла.

JSONObject jsonObject = null; 
    try { 
     jsonObject = new JSONObject(result); 
     JSONArray jsonARRAY = jsonObject.getJSONArray("nameOfJSONArray"); 
     for (int i = 0; i < jsonARRAY.length(); i++) { 
      JSONObject jsonOBJECT = (JSONObject) jsonARRAY.get(i); 
      String yourValue = jsonOBJECT.getString("valueKey"); 

     } 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
Смежные вопросы