2015-02-05 5 views
0

я получить JSONObject с моего сервера в моем Android приложения через службу и для того, чтобы отправить в моей деятельности я конвертировать JSONObject в строку сJSONException при преобразовании в JSONArray

String myjson= gson.toJson(object); 
b.putString("json", myjson); 

И передать строку в мой деятельность, где я воссоздают JSONObject из строки

Gson gson = new Gson(); 
JSONObject jobj = gson.fromJson(mydata, JSONObject.class); 
JSONArray jarray = jobj.getJSONArray("myitems"); 

Моя JSON, как показано ниже

{"myitems":[{"event_id":"1","title":"Music launch party at makeover","description":"Music Launch function at Makeover","store_id":"2","user_id":"1","category_id":"1","submittedby":"store","start_date":"2015-02-03 09:00:01","end_date":"2015-02-03 20:00:00","price":"1000","gallery_1":"","gallery_2":"","gallery_3":"","add_lat":"30.693771","add_lon":"76.76486","distance":"10.329089177806534"},{"event_id":"2","title":"The Bacardi party at the New year bash","description":"Altius organizes a new year bash at their Night House.","store_id":"2","user_id":"1","category_id":"3","submittedby":"user","start_date":"2015-02-05 17:08:40","end_date":"2015-02-05 22:08:48","price":"2000","gallery_1":"","gallery_2":"","gallery_3":"","add_lat":"30.69461","add_lon":"76.76176","distance":"10.575941394542852"}]} 

Но я получаю ошибку при получении jsonarray из jsonobject. какой должен быть правильный способ получить jsonarray из jsonobject или то, что неправильно я здесь делаю.

+0

что говорит ошибка? – TZHX

+0

jsonexception .gson.internal.LinkedTreeMap не может быть преобразован в jsonarray – user2779311

+1

Вот несколько советов, которые я получил от сети при поиске манипуляций JSON, которые при работе с вложенными объектами или массивом в JSON стараются правильно создать класс mapper, а затем выполните свою работу. –

ответ

2

Попробуйте следующее:

  1. Создайте класс, содержащий точную копию JSON объектов

     
    public class MyItem {

    String event_id; String title; String description; String store_id ; String user_id; String category_id; String submittedby; String start_date; String end_date; String price; String gallery_1; String gallery_2; String gallery_3; String add_lat; String add_lon; String distance;

    public MyItem() { } }

  2. In your case myjson is the string containing the json reply..so

     JSONArray array = null; 
    
         try { 
          JSONObject jsonResp = new JSONObject(myjson); 
          array = jsonResp.getJSONArray("myitems"); 
    
         } catch (JSONException e) { 
    
          e.printStackTrace(); 
         } 
    
  3. Затем вы можете перебирать массив и хранить объекты в пользовательском классе, как так:

для (int i = 0; i < array.length(); i ++) { JSONObject json2 = null;

try { json2 = (JSONObject) array.get(i); } catch (JSONException e) { e.printStackTrace(); } Gson gson = new Gson(); MyItem myItem = gson.fromJson(json2.toString(), MyItem.class); //Do whatever you want with the object here

}

+0

если я не использую gson, чтобы преобразовать строку обратно в jsonobject и делать то, что вы написали, я получаю ошибку при получении jsonarray, что не имеет значения для myitems.kindly update – user2779311

+0

, потому что вы не сопоставляете объект json в пользовательский класс ... попробуйте мой пример, он работает ... я протестировал его –

+0

это logcat поля заголовка: myITEM: вечеринка с музыкой в ​​makeover –

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