2016-08-21 202 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")來確定&如果你的user_data是json對象或者返回null,返回json對象。

+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(); 
    }