0

GSON による JSON 解析に問題があります

私の JSONERESPONSE は

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

この応答を解析する方法は?

上記の応答のクラスの作成に問題があることを意味しますサービスクラスを作成しましたが、サービスクラスの作成方法がわかりません。

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();

注:応答を変更することはできないため、提案しないでください

ありがとうございました

4

2 に答える 2

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 配列です。したがって、2 つのクラスが必要であることを意味します。1 つは json 配列内の各アイテムを表し、もう 1 つはアイテムのリストを保持するラッパーとして再生されます。

于 2013-03-11T10:34:48.150 に答える
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());
}
于 2013-03-12T00:00:22.260 に答える