Я пытаюсь создать объект фотографий ArrayList of Photo. Я хочу отделить класс Photo от класса Photos, потому что он становится нечитаемым. Проблема не в том, что я больше не получаю никаких данных обратноМодернизация: Разбор JSON для нескольких объектов Java с использованием GSON
Стоит отметить, что это работает, когда у меня был класс фото вложенной в фотографиях класса следующим образом:
public class Photos {
@Expose private int page;
@Expose private int pages;
@Expose private int perpage;
@Expose private String total;
@Expose private ArrayList<Photo> photo = new ArrayList<Photo>();
//helpers
public ArrayList<Photo> getPhotos(){return photo;}
public void setPhotos(ArrayList<Photo> photos){this.photo = photos;}
//want to put this in it's own class
public class Photo {
//helpers
@Override
public String toString(){
return title;
}
public String getUrl(){return url_s;}
//GSON fields
@Expose private String id;
@Expose private String owner;
@Expose private String secret;
@Expose private String server;
@Expose private int farm;
@Expose private String title;
@Expose private int ispublic;
@Expose private int isfriend;
@Expose private int isfamily;
@Expose private String url_s;
}
}
Переоборудование:
new Callback<PhotosResponse>() {
@Override
public void success(PhotosResponse photosResponse, Response response) {
bus.post(new ImagesReceivedEvent(photosResponse.getPhotosObject().getPhotos()));
}
параметры соответствовали JSON точно, и я получил ArrayList через следующий ответ:
public class ImagesReceivedEvent {
private ArrayList<Photo> result;
public ImagesReceivedEvent(ArrayList<Photo> result){
Log.i(TAG, "arraylist for presenter");
this.result = result;
}
public ArrayList<Photo> getResult(){return result;}
}
Это где был получен ответ, но не больше:
public class PhotosResponse {
@Expose private Photos photos;
@Expose private String stat;
public Photos getPhotosObject(){return photos;}
public void setPhotosObject(Photos photos) {
this.photos = photos;
}
public String getStat() {
return stat;
}
public void setStat(String stat) {
this.stat = stat;
}
}
Как я могу разделить эти классы и до сих пор получить ArrayList в качестве ответа? Я хочу разделить их, потому что я планирую использовать Parcelable для каждого класса, есть некоторые препятствия, которые мне нужно будет перепрыгнуть при наличии внутреннего класса. Любое руководство будет высоко оценено! Благодарю.
Edit: Вот JSON полезной нагрузки:
{ "photos": { "page": 1, "pages": 10, "perpage": 100, "total": "1000",
"photo": [
{ "id": "18473086614", "owner": "[email protected]", "secret": "b3c684c356", "server": "259", "farm": 1, "title": "My travels circa 2013. Summer days on #charlesbridge #charlesbridgeprague #prauge. [email protected] || 718-754-5850 #photographer #photography #canonphotography #canon #canondslr #canon600d #dslr #600d #travelphotography #europe #upboundonline #canonre", "ispublic": 1, "isfriend": 0, "isfamily": 0 },
{ "id": "18473090744", "owner": "[email protected]", "secret": "2734055852", "server": "3705", "farm": 4, "title": "Untitled", "ispublic": 1, "isfriend": 0, "isfamily": 0 },
{ "id": "18473091934", "owner": "[email protected]", "secret": "b40dbfcf15", "server": "401", "farm": 1, "title": "Climbing Acatenango", "ispublic": 1, "isfriend": 0, "isfamily": 0 },
{ "id": "18473092714", "owner": "[email protected]", "secret": "e51f5a183b", "server": "3936", "farm": 4, "title": "DSCF1735.jpg", "ispublic": 1, "isfriend": 0, "isfamily": 0 }
] }, "stat": "ok" }
Можете ли вы разместить JSON (пример тела), который вы хотите десериализовать? –
Я не могу сказать, что вы просите. Вы говорите, что считаете, что Gson прекратил десериализацию правильно, когда вы удаляете свой внутренний вложенный класс? –
Точно. Он работал раньше (как описано в вышеприведенном классе фотографий с вложенной фотографией), но я переместил класс фотографии в свой класс и прекратил работу. Это может быть проблема образования. – Futureproof