2016-11-16 34 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