2016-11-16 107 views
-2

對於解析JSON不能被轉換爲JSONObject的錯誤我使用JSONArray和JSONObject的:

protected void parseJson() 
    { 
     JSONObject object=null; 
     try { 

      object=new JSONObject(json); 
      myArray=object.getJSONArray(MY_ARRAY); 
      Log.e("Array Length",""+myArray.length()); 
      key_id=new String[myArray.length()]; 
      key_name=new String[myArray.length()]; 

      for (int i=0;i<=myArray.length();i++) 
      { 
       JSONObject fetchObject=myArray.getJSONObject(i); 

        key_id[i] = fetchObject.getString(KEY_ID); 
        key_name[i] = fetchObject.getString(KEY_NAME); 


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

JSON數據:

{ 
     "data": [{ 
      "key": 1, 
      "myval": "hello" 
     }, { 
      "key": 1, 
      "myval": "hello" 
     }, { 
      "key": 1, 
      "myval": "hello" 
     }, null, { 
      "key": 1, 
      "myval": "hello" 
     }, { 
      "key": 1, 
      "myval": "hello" 
     }] 
    } 

我的問題是,當fetchObject獲取它給我的空對象org.json.JSONObject$1無法在try catch中轉換爲JSONObject。 請幫助我,我怎麼能解決這個問題.....感謝您閱讀....

+2

爲什麼你在解析代碼時如此努力而不是像GSON那樣使用json解析庫是傑克遜? –

+1

你的json結構在說別的,你的代碼正在做別的事情,這看起來很可疑 –

+0

爲什麼api的人會給你發一個空?你可以問,如果鍵設爲myVal是空白的,他們可以給空字符串,如{ \t \t「關鍵」:1, \t \t「設爲myVal」:「」 \t}那麼你的問題將得到解決 – AmeeJoshi

回答

0

閱讀JsonArray和JSONObject的文檔後,我知道如何來解決這個問題。

protected void parseJson() 
    { 
     JSONObject object=null; 
     try { 

      object=new JSONObject(json); 
      myArray=object.getJSONArray(MY_ARRAY); 
      Log.e("Array Length",""+myArray.length()); 
      key_id=new String[myArray.length()]; 
      key_name=new String[myArray.length()]; 

      for (int i=0;i<=myArray.length();i++) 
      { 

       JSONObject fetchObject=myArray.optJSONObject(i); 

        if(fetchObject==null) 
        { 
        //do nothing 
        } 
        else 
        { 
        key_id[i] = fetchObject.getString(KEY_ID); 
        key_name[i] = fetchObject.getString(KEY_NAME); 

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

就像我告訴的那樣。 – nzala

+2

實際上這正是nzala告訴你試試:):+1:對你來說nzala – DominikAngerer

2
if(obj.length() == 0) 

是我會做什麼。

JSONObject fetchObject; 

if(flowerArray.getJSONObject(i).length() !=0) 

/

fetchObject = flowerArray.getJSONObject(i) 
    if(fetchObject== null) 
+0

讓我試試這個 – Manish

+0

不工作在我的情況下 – Manish