Получить метки из Blogger Api JSON, используя Retrofit и Gson - PullRequest
0 голосов
/ 29 сентября 2018

Я хочу получить ярлыки из API-интерфейса Blogger.Вот мой json

{
 "kind": "blogger#postList",
 "items": [
  {
   "kind": "blogger#post",
   "id": "12222222225",
   "blog": {
    "id": "3333333333"
   },
   "published": "2018-09-28T02:38:00-07:00",
   "updated": "2018-09-29T00:05:24-07:00",
   "etag": "some tag",
   "url": "some url",
   "selfLink": "some link",
   "title": "Test post 2",
   "content": "post content",
   "author": {
    "id": "a11111111111",
    "displayName": "Some Name",
    "url": "Author url",
    "image": {
     "url": "Author image"
    }
   },
   "replies": {
    "totalItems": "0",
    "selfLink": "Comment url"
   },
   "labels": [
    "label1",
    "label 2"
   ]
  },

  {
   "kind": "blogger#post",
   "id": "12222222225",
   "blog": {
    "id": "3333333333"
   },
   "published": "2018-09-28T02:38:00-07:00",
   "updated": "2018-09-29T00:05:24-07:00",
   "etag": "some tag",
   "url": "some url",
   "selfLink": "some link",
   "title": "Test post 2",
   "content": "post content",
   "author": {
    "id": "a11111111111",
    "displayName": "Some Name",
    "url": "Author url",
    "image": {
     "url": "Author image"
    }
   },
   "replies": {
    "totalItems": "0",
    "selfLink": "Comment url"
   },
   "labels": [
    "label1"
   ]
  },

  {
   "kind": "blogger#post",
   "id": "12222222225",
   "blog": {
    "id": "3333333333"
   },
   "published": "2018-09-28T02:38:00-07:00",
   "updated": "2018-09-29T00:05:24-07:00",
   "etag": "some tag",
   "url": "some url",
   "selfLink": "some link",
   "title": "Test post 2",
   "content": "post content",
   "author": {
    "id": "a11111111111",
    "displayName": "Some Name",
    "url": "Author url",
    "image": {
     "url": "Author image"
    }
   },
   "replies": {
    "totalItems": "0",
    "selfLink": "Comment url"
   }
  }

 ],
 "etag": "some etag"
}

А вот мой объект BlogPost -

import java.util.ArrayList;
import java.util.List;

public class BlogPost {
    private String kind;
    private ArrayList<Item> items;

    public BlogPost(String kind, ArrayList<Item> items) {
        this.kind = kind;
        this.items = items;
    }

    public String getKind() {
        return kind;
    }

    public ArrayList<Item> getItems() {
        return items;
    }
}

class Item {

    private String title;
    private String content;
    private String url;
    private String published;


    public Item(String title, String content, String url, String published) {
        this.title = title;
        this.content = content;
        this.url = url;
        this.published = published;
    }

    public String getTitle() {
        return title;
    }

    public String getContent() {
        return content;
    }

    public String getUrl() {
        return url;
    }

    public String getPublished() {
        return published;
    }
}

А вот мой метод getData, в котором я передаю данные в recyclerview

private void getData(){
        Call<BlogPost> blogPost = BloggerApi.getService().getPostList();
        blogPost.enqueue(new Callback<BlogPost>() {
            @Override
            public void onResponse(Call<BlogPost> call, Response<BlogPost> response) {
                BlogPost list = response.body();
                recyclerView.setAdapter(new PostAdaptar(MainActivity.this,list.getItems()));
            }

            @Override
            public void onFailure(Call<BlogPost> call, Throwable t) {

            }
        });
    }

Все работает нормально.Я могу получить всего три сообщения и отобразить их в программе просмотра.Но я хочу получить ярлыки и показать их в сообщении с сообщением переработчика.

Но у меня вопрос, как получить ярлыки?Нужно ли создавать отдельный класс с именем Labels и передавать его в Item class?Если у кого-нибудь есть пример, пожалуйста, дайте мне знать.Спасибо.

1 Ответ

0 голосов
/ 29 сентября 2018

Да, вы можете создать класс Labels для него, я рекомендую этот сайт для автоматического преобразования вашего Json в классы объектов Java для вас.

Другим подходом может быть созданиеItem JSONObject и сделайте что-то вроде этого

JSONObject jObj = list.getItems().get(0);
ArrayList<String> labels = jObj.getStringArray("labels");
...