Android 解析json字符串时,无法将org.json.JSONObject$1转换为JSONObject错误

Android 解析json字符串时,无法将org.json.JSONObject$1转换为JSONObject错误,android,json,android-json,Android,Json,Android Json,为了解析json,我使用JSONArray和JsonObject: protected void parseJson() { JSONObject object=null; try { object=new JSONObject(json); myArray=object.getJSONArray(MY_ARRAY); Log.e("Array Length",""+myArray

为了解析json,我使用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();
        }
    }
我的问题是,当fetchObject获取空对象时,它给我的
org.json.JSONObject$1
不能在try-catch中转换为JSONObject。 请帮助我如何解决这个问题…谢谢阅读

if(obj.length() == 0)
这就是我要做的

JSONObject fetchObject;

if(flowerArray.getJSONObject(i).length() !=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();
        }
    }
protectedvoidparsejson()
{
JSONObject对象=null;
试一试{
对象=新的JSONObject(json);
myArray=object.getJSONArray(MY_数组);
Log.e(“数组长度”,“myArray.Length());
key_id=新字符串[myArray.length()];
key_name=新字符串[myArray.length()];

对于(int i=0;iWhy你这么努力地解析代码而不是像GSON is Jackson那样使用json解析库?你的json结构在说其他的东西,而你的代码在做其他的事情,这看起来很可疑,为什么api的家伙会给你一个null???你可以问如果key和myval是空的,他们可以给出像{“key”:1这样的空字符串,“myval”:“}那么你的问题就解决了Hello Manish-我会尽快来找你:)让我试试这个事实上这正是nzala让你试试的:):+1:对你nzala
fetchObject = flowerArray.getJSONObject(i)
    if(fetchObject== null)
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();
        }
    }