Неверные данные в ответ на запрос (JSON, Retrofit, Java)
Имею JSON:
{"response":{"count":30,"items":[{"id":31,"from_id":-116125443,"owner_id":-116125443,"date":1503404720,"marked_as_ads":0,"post_type":"post","text":"Еще одно подтверждение, как здорово заходят хиты даже через 15 лет. Немцы Reamonn в начале 2000-х сделали прорыв со своей меланхоличной \"Supergirl\". В 2017 году их успеть решили повторить Anna Nackab.","signer_id":276417933,"can_delete":1,"can_pin":1,"attachments":[{"type":"audio","audio":{"artist":"Программа \"Сэмпл один на Всех!\"","id":456241280,"owner_id":2000147926,"title":"Reamon vs. Anna Naclab","duration":25,"url":"https:\/\/vk.com\/mp3\/audio_api_unavailable.mp3","date":1503404721,"genre_id":1001}}],"post_source":{"type":"vk"},"comments":{"count":2,"can_post":1},"likes":{"count":5,"user_likes":1,"can_like":0,"can_publish":1},"reposts":{"count":1,"user_reposted":1}},{"id":30,"from_id":-116125443,"owner_id":-116125443,"date":1480571513,"marked_as_ads":0,"post_type":"post","text":"В 1991 году песня Марка Коэна \"Walking in Memphis\" появилась в эфирах радиостанций. За все время своего существования песня \"обросла\" каверами и ремиксами, использовалась в качестве саундтреков к фильмам. И по сей день припев песни является самым узнаваемым! Кстати, и по сей день это один из успешных синглов США и Великобритании.","can_delete":1,"can_pin":1,"attachments":[{"type":"audio","audio":{"artist":"Программа \"Сэмпл один на Всех!\"","id":456240538,"owner_id":2000129726,"title":"DJ Smash vs. Marc Cohn","duration":25,"url":"https:\/\/vk.com\/mp3\/audio_api_unavailable.mp3","date":1480571513,"genre_id":18}}],"post_source":{"type":"vk"},"comments":{"count":0,"can_post":1},"likes":{"count":5,"user_likes":1,"can_like":0,"can_publish":1},"reposts":{"count":1,"user_reposted":1}},{"id":29,"from_id":-116125443,"owner_id":-116125443,"date":1480338116,"marked_as_ads":0,"post_type":"post","text":"В 2000-х хит от группы \"Руки Вверх\" \"Песенка №5\" зазвучала на европейских танцполах в англоязычном варианте. Вот это, действительно оказалось приятным. Русскоязычная песня стала основой для многих кавер-версий и ремиксов от Атлантики до Тихого океана! Как это произошло - в нашей программе!","can_delete":1,"can_pin":1,"attachments":[{"type":"audio","audio":{"artist":"Программа \"Сэмпл один на Всех!\"","id":456240399,"owner_id":2000124826,"title":"Руки Вверх vs. ATC","duration":25,"url":"","date":1480338116,"genre_id":18,"no_search":1,"content_restricted":1}}],"post_source":{"type":"vk"},"comments":{"count":0,"can_post":1},"likes":{"count":7,"user_likes":1,"can_like":0,"can_publish":1},"reposts":{"count":1,"user_reposted":1}},{"id":28,"from_id":-116125443,"owner_id":-116125443,"date":1480337719,"marked_as_ads":0,"post_type":"post","text":"Музыка преображает человека. Напевая любимый мотив, Вы преображаете все вокруг. А припев современной песни так и просится запомнится... А если мотив песни Вы можете вспомнить через несколько лет, то главная задача автора решена - Вы стали его поклонником ?. Как изменялась одна популярная песня на протяжении нескольких лет. Добро пожаловать в мир программы.","can_delete":1,"can_pin":1,"attachments":[{"type":"audio","audio":{"artist":"Программа \"Сэмпл один на Всех!\"","id":456240300,"owner_id":2000124943,"title":"Frida Gold vs. Gala","duration":25,"url":"https:\/\/vk.com\/mp3\/audio_api_unavailable.mp3","date":1480337719,"genre_id":18}}],"post_source":{"type":"vk"},"comments":{"count":0,"can_post":1},"likes":{"count":4,"user_likes":1,"can_like":0,"can_publish":1},"reposts":{"count":1,"user_reposted":1}},{"id":27,"from_id":-116125443,"owner_id":-116125443,"date":1467535791,"marked_as_ads":0,"post_type":"post","text":"Этой истории уже более 10-ти лет. Для современной музыкальной истории не такой большой срок, но тем не менее, изменения очевидны. DJ David Guetta еще раз подтвердил свое умение делать хорошие хиты, пусть и на старом материале. Об этом в нашей программе.","can_delete":1,"can_pin":1,"attachments":[{"type":"audio","audio":{"artist":"Программа \"Сэмпл Один на Всех!\"","id":456239491,"owner_id":2000338373,"title":"David Guetta vs. Alice Deejay","duration":25,"url":"https:\/\/vk.com\/mp3\/audio_api_unavailable.mp3","date":1467535791,"genre_id":18}}],"post_source":{"type":"vk"},"comments":{"count":0,"can_post":1},"likes":{"count":6,"user_likes":1,"can_like":0,"can_publish":1},"reposts":{"count":1,"user_reposted":1}}]}}
Делаю запрос:
@GET("/method/wall.get?")
Call<WallInfo> getresponse (@Query("owner_id=") String OWNER_ID, @Query("offset") String OFFSET, @Query("count") String COUNT, @Query("v") String version,@Query("access_token") String access_token);
Достаю данные:
private void getresponse() throws IOException {
Retrofit retrofit = NetworkClient.getRetrofitClient();
WallInterface wallInterface = retrofit.create(WallInterface.class);
Call<WallInfo> callwall = wallInterface.getresponse("-116125443", "0", "5", "5.52", "здесь пишу токен - все норм");
callwall.enqueue(new Callback<WallInfo>() {
@Override
public void onResponse(@NotNull Call call, Response wallresponse) {
WallInfo wallInfo = (WallInfo) wallresponse.body();
final by.dream.vk_groups.Response response = wallInfo.getResponse();
final List<Item> items = response.getItems();
final StringBuilder sb = new StringBuilder();
sb.append(items.get(1).getText());
textView = findViewById(R.id.textView);
textView.setText(sb);
System.out.println("Text: "+sb.toString());
}
По итогу мне выводится ответ, но откуда он, я вообще не понимаю.... Т.е. мне надо забрать информацию из поля "text" каждого item. А мне прилетает что-то...
На всякий случай:
WallInfo:
public class WallInfo {
@SerializedName("response")
@Expose
private Response response;
public Response getResponse() {
return response;
}
public void setResponse(Response response) {
this.response = response;
}
}
Response:
public class Response {
@SerializedName("count")
@Expose
private Integer count;
@SerializedName("items")
@Expose
private List<Item> items = null;
public Integer getCount() {
return count;
}
public void setCount(Integer count) {
this.count = count;
}
public List<Item> getItems() {
return items;
}
public void setItems(List<Item> items) {
this.items = items;
}
}
Item:
public class Item {
@SerializedName("id")
@Expose
private Integer id;
@SerializedName("from_id")
@Expose
private Integer fromId;
@SerializedName("owner_id")
@Expose
private Integer ownerId;
@SerializedName("date")
@Expose
private Integer date;
@SerializedName("marked_as_ads")
@Expose
private Integer markedAsAds;
@SerializedName("post_type")
@Expose
private String postType;
@SerializedName("text")
@Expose
private String text;
@SerializedName("signer_id")
@Expose
private Integer signerId;
@SerializedName("can_delete")
@Expose
private Integer canDelete;
@SerializedName("can_pin")
@Expose
private Integer canPin;
@SerializedName("attachments")
@Expose
private List<Attachment> attachments = null;
@SerializedName("post_source")
@Expose
private PostSource postSource;
@SerializedName("comments")
@Expose
private Comments comments;
@SerializedName("likes")
@Expose
private Likes likes;
@SerializedName("reposts")
@Expose
private Reposts reposts;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getFromId() {
return fromId;
}
public void setFromId(Integer fromId) {
this.fromId = fromId;
}
public Integer getOwnerId() {
return ownerId;
}
public void setOwnerId(Integer ownerId) {
this.ownerId = ownerId;
}
public Integer getDate() {
return date;
}
public void setDate(Integer date) {
this.date = date;
}
public Integer getMarkedAsAds() {
return markedAsAds;
}
public void setMarkedAsAds(Integer markedAsAds) {
this.markedAsAds = markedAsAds;
}
public String getPostType() {
return postType;
}
public void setPostType(String postType) {
this.postType = postType;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public Integer getSignerId() {
return signerId;
}
public void setSignerId(Integer signerId) {
this.signerId = signerId;
}
public Integer getCanDelete() {
return canDelete;
}
public void setCanDelete(Integer canDelete) {
this.canDelete = canDelete;
}
public Integer getCanPin() {
return canPin;
}
public void setCanPin(Integer canPin) {
this.canPin = canPin;
}
public List<Attachment> getAttachments() {
return attachments;
}
public void setAttachments(List<Attachment> attachments) {
this.attachments = attachments;
}
public PostSource getPostSource() {
return postSource;
}
public void setPostSource(PostSource postSource) {
this.postSource = postSource;
}
public Comments getComments() {
return comments;
}
public void setComments(Comments comments) {
this.comments = comments;
}
public Likes getLikes() {
return likes;
}
public void setLikes(Likes likes) {
this.likes = likes;
}
public Reposts getReposts() {
return reposts;
}
public void setReposts(Reposts reposts) {
this.reposts = reposts;
}
}
Ответы (1 шт):
Автор решения: Дмитрий
→ Ссылка
Переделал функцию с проверкой в консоли:
private void getresponse() throws IOException {
Retrofit retrofit = NetworkClient.getRetrofitClient();
WallInterface wallInterface = retrofit.create(WallInterface.class);
Call<String> call = wallInterface.getresponse("-116125443", "0", "5", "5.52", "key");
call.enqueue(new Callback<String>() {
@Override
public void onResponse(Call<String> call, Response<String> response) {
if (response.isSuccessful()){
if (response.body() !=null){
System.out.println("onSuccess - " +response.body());
//textView.setText(response.body());
try {
JSONObject obj = (JSONObject) new JSONObject(response.body()).get("response");
JSONArray items = (JSONArray) obj.get("items");
for (int i=0; i < items.length(); i++){
JSONObject item = (JSONObject) items.get(i);
String item_text = (String) item.get("text");
System.out.println("Value of field" + Integer.toString(i+1) + " is -> " + item_text);
textitems[i] = item_text;
//textView.setText(item_text);
}
} catch (JSONException e) {
e.printStackTrace();
}
//textView.setText(jsonresponse);
} else {
System.out.println("not Success");
}
}
}