android json object objectarray" {"不是" ["

时间:2017-03-03 09:13:01

标签: android json

我收到以下格式的JSON

doctrine:migrations:status

在PHP和Angular中工作正常

在android studio中我收到以下错误

{
    "goods" : {
        "t1" : {
            "name" : "name1"
        },
        "t2" : {
            "name" : "name2"
        }
    }
}

在以下结构中正常工作

W/System.err: org.json.JSONException: Unterminated array at character 23 of {
W/System.err:   "goods" : [
W/System.err:       "t1" : {
W/System.err:           "name" : "name1"
W/System.err:       },
W/System.err:       "t2" : {
W/System.err:           "name" : "name2"
W/System.err:       }
W/System.err:   ]
W/System.err: }

但问题是我从服务器获取JSON:对象中的许多对象,而不是:数组中的许多对象。有没有办法使这项工作,我无法改变服务器的结构,因为在那个Json工作许多其他网站。请帮忙 !!!!!!!!!!!!!

以下是我如何使用它的代码

{
    "goods" : [
        {
            "name" : "name1"
        },
        {
            "name" : "name2"
        }
    ]
}

1 个答案:

答案 0 :(得分:0)

try {
        JSONObject jsonObj = new JSONObject(jsonStr);


    // Getting JSON Object node
    JSONObject contacts = jsonObj.getJSONObject("goods");

    // looping through All Contacts
    for (int i = 0; i < contacts.length(); i++) {
        JSONObject c = contacts.getJSONObject(i);
        String name = c.getString("name");

        Log.e("JSON : ", name);

    }

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

试试这个。如果这不起作用,请随时询问或尝试this希望它可以帮助您

编辑:

如果您的密钥是动态生成的。请尝试以下代码

try
        {   

            JSONObject jObject= new JSONObject(responseData).getJSONObject("goods");
            Iterator<String> keys = jObject.keys();
            while( keys.hasNext() )
            {
                String key = keys.next();
                Log.v("**********", "**********");
                Log.v("category key", key);
                JSONObject innerJObject = jObject.getJSONObject(key);

                String name = innerJObject.getString("name");


                Log.v("name = "+name);

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