Partage
  • Partager sur Facebook
  • Partager sur Twitter

Retrofit - BEGIN_ARRAY but was BEGIN_OBJECT

Sujet résolu
    18 janvier 2018 à 11:24:51

    Bonjour à tous !

    Pour un projet, j'ai besoin de récupérer les articles du NY Times grâce à leur API.

    J'ai utilisé JSONschema pour créer mes class qui de/serialize les données du JSON.

    Voici le JSON en l'état brut :

    {
      "status": "OK",
      "copyright": "Copyright (c) 2018 The New York Times Company. All Rights Reserved.",
      "section": "home",
      "last_updated": "2018-01-18T04:29:08-05:00",
      "num_results": 46,
      "results": [
        {
          "section": "Briefing",
          "subsection": "",
          "title": "Angela Merkel, Brexit, Winter Olympics: Your Thursday Briefing",
          "abstract": "Here’s what you need to know to start your day.",
          "url": "https://www.nytimes.com/2018/01/17/briefing/angela-merkel-brexit-winter-olympics.html",
          "byline": "By PATRICK BOEHLER",
          "item_type": "Article",
          "updated_date": "2018-01-18T00:13:23-05:00",
          "created_date": "2018-01-17T23:59:53-05:00",
          "published_date": "2018-01-17T23:59:53-05:00",
          "material_type_facet": "",
          "kicker": "",
          "des_facet": [],
          "org_facet": [],
          "per_facet": [],
          "geo_facet": [],
          "multimedia": [
            {
              "url": "https://static01.nyt.com/images/2018/01/18/briefing/18amBriefiing-Europe-core-container-gif-trypt/18amBriefiing-Europe-ss-slide-IIW6-thumbStandard.jpg",
              "format": "Standard Thumbnail",
              "height": 75,
              "width": 75,
              "type": "image",
              "subtype": "photo",
              "caption": "",
              "copyright": "Doug Mills/The New York Times'"
            },
    .......

     Les différentes class générées par JSONSchema :

    public class TopStoriesMain {
    
        @SerializedName("status")
        @Expose
        private String status;
        @SerializedName("num_results")
        @Expose
        private Integer numResults;
        @SerializedName("results")
        @Expose
        private List<TopStoriesResult> results = null;
    
        public String getStatus() {
            return status;
        }
    
        public void setStatus(String status) {
            this.status = status;
        }
    
        public Integer getNumResults() {
            return numResults;
        }
    
        public void setNumResults(Integer numResults) {
            this.numResults = numResults;
        }
    
        public List<TopStoriesResult> getResults() {
            return results;
        }
    
        public void setResults(List<TopStoriesResult> topStoriesResults) {
            this.results = topStoriesResults;
        }
    
    }
    public class TopStoriesResult {
    
        @SerializedName("section")
        @Expose
        private String section;
        @SerializedName("subsection")
        @Expose
        private String subsection;
        @SerializedName("title")
        @Expose
        private String title;
        @SerializedName("abstract")
        @Expose
        private String _abstract;
        @SerializedName("url")
        @Expose
        private String url;
        @SerializedName("byline")
        @Expose
        private String byline;
        @SerializedName("published_date")
        @Expose
        private String publishedDate;
        @SerializedName("des_facet")
        @Expose
        private List<Object> desFacet = null;
        @SerializedName("org_facet")
        @Expose
        private List<Object> orgFacet = null;
        @SerializedName("per_facet")
        @Expose
        private List<Object> perFacet = null;
        @SerializedName("geo_facet")
        @Expose
        private List<Object> geoFacet = null;
        @SerializedName("multimedia")
        @Expose
        private List<TopStoriesMultimedia> multimedia = null;
    
        public String getSection() {
            return section;
        }
    
        public void setSection(String section) {
            this.section = section;
        }
    
        public String getSubsection() {
            return subsection;
        }
    
        public void setSubsection(String subsection) {
            this.subsection = subsection;
        }
    
        public String getTitle() {
            return title;
        }
    
        public void setTitle(String title) {
            this.title = title;
        }
    
        public String getAbstract() {
            return _abstract;
        }
    
        public void setAbstract(String _abstract) {
            this._abstract = _abstract;
        }
    
        public String getUrl() {
            return url;
        }
    
        public void setUrl(String url) {
            this.url = url;
        }
    
        public String getByline() {
            return byline;
        }
    
        public void setByline(String byline) {
            this.byline = byline;
        }
    
        public String getPublishedDate() {
            return publishedDate;
        }
    
        public void setPublishedDate(String publishedDate) {
            this.publishedDate = publishedDate;
        }
    
        public List<Object> getDesFacet() {
            return desFacet;
        }
    
        public void setDesFacet(List<Object> desFacet) {
            this.desFacet = desFacet;
        }
    
        public List<Object> getOrgFacet() {
            return orgFacet;
        }
    
        public void setOrgFacet(List<Object> orgFacet) {
            this.orgFacet = orgFacet;
        }
    
        public List<Object> getPerFacet() {
            return perFacet;
        }
    
        public void setPerFacet(List<Object> perFacet) {
            this.perFacet = perFacet;
        }
    
        public List<Object> getGeoFacet() {
            return geoFacet;
        }
    
        public void setGeoFacet(List<Object> geoFacet) {
            this.geoFacet = geoFacet;
        }
    
        public List<TopStoriesMultimedia> getMultimedia() {
            return multimedia;
        }
    
        public void setMultimedia(List<TopStoriesMultimedia> topStoriesMultimedia) {
            this.multimedia = topStoriesMultimedia;
        }
    
    }
    public class TopStoriesMultimedia {
    
        @SerializedName("url")
        @Expose
        private String url;
        @SerializedName("caption")
        @Expose
        private String caption;
    
        public String getUrl() {
            return url;
        }
    
        public void setUrl(String url) {
            this.url = url;
        }
    
        public String getCaption() {
            return caption;
        }
    
        public void setCaption(String caption) {
            this.caption = caption;
        }
    
    }
    

    A noter que j'ai supprimé (dans les fichiers générés par JSONSchema) les informations dont je n'avais pas besoin.

    Et voici l'erreur :

    E/TAG: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $

    La traduction n'est pas bien compliquée mais au niveau du code j'avoue ne pas trouver l'erreur ...

    En vous remerciant d'avance pour vos réponse ! :D



    • Partager sur Facebook
    • Partager sur Twitter
      7 mai 2018 à 14:27:48

      Bonjour, comment avez-vous résolu ce problème ?

      Je rencontre le même en ce moment :(

      • Partager sur Facebook
      • Partager sur Twitter

      Tout savoir sur Android : https://www.facebook.com/welearnandroid/?ref=bookmarks

        11 juin 2018 à 14:32:36

        Bonjour,

        J'aimerais savoir comment tu as pu résoudre votre problème ?, merci

        -
        Edité par regyos 11 juin 2018 à 14:34:17

        • Partager sur Facebook
        • Partager sur Twitter

        Retrofit - BEGIN_ARRAY but was BEGIN_OBJECT

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown