java - How to Access Child Item In JSON Array -
i querying flickr based on search terms, , response json array. here root level along first 2 results:
{ photos: { page: 1, pages: 4222, perpage: 100, total: "422175", photo: [ { id: "28571356563", owner: "8372889@n03",secret: "c4ca6c4364", server: "8050", farm: 9, title: "95040021.jpg", ispublic: 1, isfriend: 0, isfamily: 0, url_m: "https://farm9.staticflickr.com/8050/28571356563_c4ca6c4364.jpg", height_m: "332", width_m: "500" }, { id: "28571342883", owner: "96125450@n00", secret: "db35a59412", server: "8307", farm: 9, title: "red #sunset #silhouette #trees #photography", ispublic: 1, isfriend: 0, isfamily: 0, url_m: "https://farm9.staticflickr.com/8307/28571342883_db35a59412.jpg", height_m: "500", width_m: "424" },
when load results, going iterate through items (the "total" figure) , load recyclerview.
ultimately, want iterate through "photos" , "url_m" each photo. here current call flickr api through retrofit:
call<list<photo>> call = apiinterface.getimages(mquery); call.enqueue(new callback<list<photo>>() { @override public void onresponse(call<list<photo>> call, response<list<photo>> response) { } @override public void onfailure(call<list<photo>> call, throwable t) { } }); } });
how iterate through photos , url each photo? have model classes set each map flickr api json objects:
i think you're implementing wrong retrofit callback in code. can see you're receiving first jsonobject called photos
contains jsonarray photo
, code should this
call<photoresult> call = apiinterface.getimages(query); call.enqueue(new callback<photoresult>() {...}
as can see, callback object photoresult
root level of json response, , inside should retrieve list<photo>
collection.
to generate pojos can use website http://www.jsonschema2pojo.org/
your pojos should this
public class photoresult { @serializedname("photos") @expose public photos photos; } public class photos { @serializedname("page") @expose public integer page; @serializedname("pages") @expose public integer pages; @serializedname("perpage") @expose public integer perpage; @serializedname("total") @expose public string total; @serializedname("photo") @expose public list<photo> photo = new arraylist<photo>(); } public class photo { ... }
Comments
Post a Comment