2012-06-10 2 views
0

я могу разобрать простую строку JSON, используя следующий кодКак преобразовать эту JSON строку в эквивалентный список класса

HttpClient client = new DefaultHttpClient(); 
    HttpGet httpGet = new HttpGet(
      URL.toString()); 




    try { 
     HttpResponse response = client.execute(httpGet); 
     StatusLine statusLine = response.getStatusLine(); 
     int statusCode = statusLine.getStatusCode(); 
     if (statusCode == 200) { 
      HttpEntity entity = response.getEntity(); 
      InputStream content = entity.getContent(); 
      BufferedReader reader = new BufferedReader(
        new InputStreamReader(content)); 

      finalResult.setText("Done") ; 

      Result = reader.readLine(); 


     } else { 
      Result = "error"; 
     } 
    } catch (ClientProtocolException e) { 
     Result = "error"; 
     e.printStackTrace(); 
    } catch (IOException e) { 
     Result = "error"; 
     e.printStackTrace(); 
    } 

, но теперь у меня есть следующие JSON снабжать струной, тетивой и т.п.

[{"Name":"Ali" ,"Age":35,"Address":"cccccccccccc"} ,{"Name":"Ali1" ,"Age":351,"Address":"cccccccccccc1"} , 
{"Name":"Ali2" ,"Age":352,"Address":"cccccccccccc2"} 
] 

и класс представляют это

package com.appnetics; 

import android.R.string; 

public class Encounter { 
    public string Name; 
    public string Address; 
    public int Age; 
} 

Я хочу перебрать этого JSON и превратить его в list<Encounter>

любая идея, как сделать это

ответ

3

Используйте org.json пространство имен. Для вашего конкретного примера вы можете сделать:

ArrayList<Encounter> encounters=new ArrayList<Encounter>(); 
JSONArray array=new JSONArray(Result); 
for(int i=0;i<array.length();i++){ 
    JSONObject elem=(JSONObject)array.get(i); 
    Encounter encounter=new Encounter(); 
    Encounter.Name=elem.getString("Name"); 
    Encounter.Age=elem.getInt("Age"); 
    Encounter.Address=elem.getString("Address"); 
    encounters.add(encounter); 
} 
+0

Ответ на 100% правильный. Если у автора больше классов с сериализацией/десериализацией в JSON, я бы рекомендовал ему посмотреть библиотеку Gson - https://sites.google.com/site/gson/gson-user-guide –

3

Другой простой способ заключается в использовании Gson another lib, чтобы облегчить вашу реализацию, которая проще в использовании по сравнению с реализацией org.json, которая поставляется с Android платформы.

Если у вас все в порядке с объектами домена. Тогда у вас есть только две строки кода для разбора json ... например

Gson gson = new Gson(); 
YourDomainObject obj2 = (YourDomainObject) gson.fromJson(jsonString, 
    YourDomainObject.class); 

и он может обрабатывать коллекции n тоже.

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