JSONObject无法转换为JSONArray

时间:2014-01-22 08:16:15

标签: java php android json

我一直在尝试使用JSON将String值从PHP传递到Android。

{"address":"Lebuh Bandar Utama, Bandar Utama,
            47800 Petaling Jaya, Selangor, Malaysia"}
{"address":"Jalan Pasar, Taman Bunga Kenanga,
            31000 Batu Gajah, Perak, Malaysia"}
{"address":"Jalan 1\/38a, Taman Sri Sinar,
            51200 Kuala Lumpur, Federal Territory of Kuala Lumpur, Malaysia"}

以下代码检索字符串。

try {
    JSONArray jArray = new JSONArray(result);
    for(int i=0;i<jArray.length();i++){
        JSONObject json_data = jArray.getJSONObject(i);
        Log.i("log_tag","name: "+json_data.getString("address"));
        //Get an output to the screen
        a.add(json_data.getString("address"));
    }
}
catch(JSONException e) {
    Log.e("log_tag", "Error parsing data "+e.toString());
}

错误是“JSONObject无法转换为JSONArray”。请提前了解并提前致谢。

3 个答案:

答案 0 :(得分:1)

要转换为JSON ARRAY,您应该具有如下所示的json地址格式:

{
    "address":
    [
        {"Lebuh Bandar Utama, Bandar Utama,
            47800 Petaling Jaya, Selangor, Malaysia"},
        {"Jalan Pasar, Taman Bunga Kenanga,
            31000 Batu Gajah, Perak, Malaysia"},
        {"Jalan 1\/38a, Taman Sri Sinar,
            51200 Kuala Lumpur, Federal Territory of Kuala Lumpur, Malaysia"}
    ]
}

然后你的代码如下:

try{
    JSONObject obj= new JSONObject(result);
    JSONArray jArray = obj.getJSONArray("address");

    //DO ANYTHING WITH jARRAY NOW
}
catch(JSONException e){
    Log.e("log_tag", "Error parsing data "+e.toString());
}

然后您可以将地址转换为JSONARRAY ..

希望它会帮助你...... !!!

答案 1 :(得分:0)

确保您拥有有效的json

你可以在这里查看

http://jsonlint.com/

{表示json对象节点

[表示json数组节点

如果结果是有效的json并且是JSONObject那么

JSONObject jsonobect = new JSONObject(result)

或者你的json看起来像

[ // json array node
    {  // json object node
        "address": "Lebuh Bandar Utama, Bandar Utama,47800 Petaling Jaya, Selangor, Malaysia"
    },
    {
        "address": "Jalan Pasar, Taman Bunga Kenanga,31000 Batu Gajah, Perak, Malaysia"
    },
    {
        "address": "Jalan 1/38a, Taman Sri Sinar,51200 Kuala Lumpur, Federal Territory of Kuala Lumpur, Malaysia"
    }
]

或类似

{ // json object node
    "addresses": [ // json array of addresses
        { // json object node
            "address": "Lebuh Bandar Utama, Bandar Utama,47800 Petaling Jaya, Selangor, Malaysia"
        },
        {
            "address": "Jalan Pasar, Taman Bunga Kenanga,31000 Batu Gajah, Perak, Malaysia"
        },
        {
            "address": "Jalan 1/38a, Taman Sri Sinar,51200 Kuala Lumpur, Federal Territory of Kuala Lumpur, Malaysia"
        }
    ]
}

答案 2 :(得分:0)

JsonArray表示是[{JSONObject},{JSONOBject}],但你有{JSONOBject} {JSONOBject},所以你没有jsonArray