JSON数组无法转换为JSON对象

时间:2013-12-17 06:57:41

标签: android json parsing

我正在研究json解析项目。错误显示为json数组无法转换为json对象。这是json视图。

{
"State Name": [
    [
        {
            "state_name": "New South Wales (NSW)"
        }
    ],
    [
        {
            "state_name": "Western Australia (WA)"
        }
    ]
]

}

java代码是:

try {
    JSONArray statesnames = json.getJSONArray(TAG_STATE_NAME);


                    Toast.makeText(getApplicationContext(), ""+statesnames.length(), 3000).show();


                    // looping through All Contacts
                    for(int i = 0; i < statesnames.length(); i++){


                        JSONObject c = statesnames.getJSONObject(i);

                        // Storing each json item in variable

                        String name = c.getString(TAG_NAME);
}

2 个答案:

答案 0 :(得分:0)

如果您尝试在一个响应中发送两个数组,则可以这样做:

[                                         
   [{"state_name":"New South Wales (NSW)"}],
   [{"state_name":"Western Australia (WA)"}]
]

首先将您的JSONObject作为

JSONObject result= new JSONObject(json);
JSONArray arr= result.getJSONArray("State Name");

整个JSON字符串是JSONArray

getJSONArray(0)包含JSONObjects state_name,如下所示:

for (int i = 0; i < arr.length(); i++) {
          JSONArray firstArry = arr.getJSONArray(i);

          for (int j = 0; j < firstArry.length(); j++) {
                 JSONObject secondarr= firstArry.getJSONObject(j);
                 System.out.println("state_name result: "+secondarr.getString("state_name"));
          }
}

答案 1 :(得分:0)

试试这个..

{

    "State Name":[   --> JSONArray
        [            --> JSONArray
            {        --> JSONObject
                "state_name":"New South Wales (NSW)"
            }
        ],
        [
            {
                "state_name":"Western Australia (WA)"
            }
        ]
    ]

}

示例:

JSONObject json = new JSONObject(response);
JSONArray statesnames = json.getJSONArray("State Name");

for (int i1 = 0; i1 < statesnames.length(); i1++) {
          JSONArray jsonarray = statesnames.getJSONArray(i1);

          for (int i2 = 0; i2 < jsonarray.length(); i2++) {
                 JSONObject jsonobject = jsonarray.getJSONObject(i2);
                 System.out.println("state_name : "+jsonobject.getString("state_name"));
          }
}