2014-01-22 110 views
-1

我一直在尝试使用JSON将PHP的字符串值传递给Android。JSONObject无法转换为JSONArray

{"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”。请摆脱一些光线,并提前致谢。

+0

你的json无效检查它在jslint – Nambi

+0

首先,这已经在SO上多次回答...将选择一个dup。其次,你甚至没有有效的JSON; *没有任何东西*你会做出解析。 –

+0

或http://stackoverflow.com/questions/8018931/jsonobject-cannot-be-converted-to-jsonarray?rq=1或http://stackoverflow.com/questions/9499629/android-jsonobject-cannot-be-转换为jsonarray?rq = 1或... –

回答

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 ..

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

+0

我有同样的问题............现在我已经使用你的代码,我发现结果要求创建局部变量我可以定义在这种情况下局部变量....... – Amitsharma

+0

我已经使用arraylist = new ArrayList >(); \t \t String url =“http://thelinejunk.com/mobileapi//locationlistdata。PHP的“; \t \t \t \t的JSONObject = JSONfunctions \t .getJSONfromURL(URL); \t尝试{ \t \t \t \t字符串地址= NULL; – Amitsharma

+0

的JSONObject =新的JSONObject(地址); \t \t jsonarray =的JSONObject .getJSONArray(address); \t \t \t \t for(int i = 0; i map = new HashMap (); \t jsonobject = new JSONObject(“result”); – Amitsharma

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" 
     } 
    ] 
} 
+0

这是正确的...如果OP甚至有一个有效的JSON对象。 –

+0

@BrianRoach是的,我意识到它现在op还没有发布有效的JSON – Raghunandan

0

JsonArray表示为[{的JSONObject},{的JSONObject}],但你必须{的JSONObject} {的JSONObject },所以你没有jsonArray

相关问题