2013-03-11 3 views
0

У меня есть выпуск в формате JSON Разбор по GSONвопрос в формате JSON разборе по GSON

мой JSONERESPONSE является

{"services":[{"service":{"name":"asd","id":"1"}}, 
    {"service":{"name":"asdf","id":"2"}}, 
    {"service":{"name":"asdfg","id":"3"}}]} 

Как разобрать этот ответ?

означает, что я вопрос в создании класса выше ответ я создал Service класс, но я в заблуждение в том, как создать услуги класса.

public class services { 

@SerializedName("service") 
ArrayList<service> list; 

public services(){ 
    System.out.println("services constructor stuff"); 
    list= new ArrayList<service>(); 
} 

/** 
* @return the list 
*/ 
public ArrayList<service> getList() { 
    return list; 
} 

/** 
* @param list the list to set 
*/ 
public void setList(ArrayList<service> list) { 
    this.list = list; 
} 

}

but getting 0 in getList(); 

Примечание: Я не могу изменить ответ, так что не предполагают, что это

Спасибо

+0

@ T.J.Crowder Я редактировал вопрос спасибо – Android

+0

@ test: Введите код для того, что вы пробовали до сих пор, что поможет людям помочь вам. –

ответ

1

Хорошо, нам нужно создать класс среднего слоя, чтобы сделать его правильным. Services.java

public class Services { 
    private ArrayList<ServiceWrapper> services = new ArrayList<ServiceWrapper>(); 
    public ArrayList<ServiceWrapper> getServices() { 
     return services; 
    } 
    public void setServices(ArrayList<ServiceWrapper> services) { 
     this.services = services; 
    } 
} 

ServiceWrapper.java

public class ServiceWrapper { 
    private Service service; 
    public Service getService() { 
     return service; 
    } 
    public void setService(Service service) { 
     this.service = service; 
    } 
} 

Service.java

public class Service { 
    private int id; 
    private String name; 
    public int getId() { 
     return id; 
    } 
    public void setId(int id) { 
     this.id = id; 
    } 
    public String getName() { 
     return name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 
} 

Ниже тестирование кода

Gson gson = new Gson(); 
String s = "{\"services\":[{\"service\":{\"name\":\"asd\",\"id\":\"1\"}},{\"service\":{\"name\":\"asdf\",\"id\":\"2\"}},{\"service\":{\"name\":\"asdfg\",\"id\":\"3\"}}]}"; 
Services services = gson.fromJson(s, Services.class); 
for(ServiceWrapper serviceWrapper : services.getServices()){ 
    System.out.println(serviceWrapper.getService().getId()); 
    System.out.println(serviceWrapper.getService().getName()); 
} 
+0

спасибо, сейчас он работает – Android

1

Services.java

public class Services { 

    private List<Service> services; 

    public List<Service> getServiceList() { 
     return services; 
    } 

    public void setServiceList(List<Service> services) { 
     this.services = services; 
    } 
} 

Service.java

public class Service { 

    private int id; 
    private String name; 

    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 
} 

ваш JSON синтаксический логика здесь идет:

Gson gson = new Gson(); 
String s = "{\"services\":[{\"service\":{\"name\":\"asd\",\"id\":\"1\"}},{\"service\":{\"name\":\"asdf\",\"id\":\"2\"}},{\"service\":{\"name\":\"asdfg\",\"id\":\"3\"}}]}"; 
Services services = gson.fromJson(s, Services.class); 

В основном, строка JSON не является простой формат JSON массив, это на самом деле массив JSON внутри объекта JSON. Таким образом, это означает, что вам нужно два класса, один представляет каждый элемент внутри json-массива - Service.java, а другой - как обертка, содержащая список элементов.

+0

@spiritwlker Вы проверили размер getServiceList()? – Android

+0

печатает 3 для меня. какую версию GSON вы используете? – spiritwalker

+0

вы правы, еще один вопрос: можем ли мы использовать ArrayList вместо списка – Android

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