2014-01-22 6 views
-1

Я пытался передать значение String с PHP на Android с помощью JSON.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 ... выберет дубликат. Во-вторых, вы даже не имеете действительного JSON; * ничего * вы сделаете это разбор. –

+0

или http://stackoverflow.com/questions/8018931/jsonobject-cannot-be-converted-to-jsonarray?rq=1 или http://stackoverflow.com/questions/9499629/android-jsonobject-cannot-be- convert-to-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 (0); i ++) { \t \t HashMap 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 yup Я понял, что теперь op не отправил действительный json – Raghunandan

0

JsonArray представление [{JSONObject}, {JSONObject}], но у вас есть {JSONObject} {JSONObject }, поэтому у вас нет jsonArray

Смежные вопросы