Ожидаемый BEGIN ARRAY, но был BEGIN_OBJECT в строке 1 и столбце 2 - PullRequest
2 голосов
/ 29 января 2020

Это json данные массива / json данные объекта из API получают ошибку ожидаемого begin_array, но это был begin_object в строке 3 и пути к столбцу 2 $

Это json данные массива / json объектные данные из API получили ошибку, ожидаемую begin_array, но были begin_object в строке 3 и пути к столбцу 2 $

Это json данные массива / json объектные данные из API получили ошибку, ожидаемые begin_array, но были begin_object в строке 3 и путь к столбцу 2 $

Это json данные массива / json данные объекта из API, получая ошибку ожидаемый begin_array, но был begin_object в строке 3 и пути столбца 2 $

    "offersdata": [
        {
            "offercode": "GRAB20",
            "title": "Get Upto",
            "description": "20% off on selected merchandise on purchase of INR 1000 or more"
        },
        {
            "offercode": "JAN20",
            "title": "Get Upto",
            "description": "20% Off on all purchases in January"
        },
        {
            "offercode": "BHHH",
            "title": "DES",
            "description": "FDSFS"
        }
    ],
    "message": "success"
}
Интерфейс
 @GET("user")
    Call<List<limitedoffers>>  getoffers();
POJO CLASS
package com.example.medico.models;

import java.util.List;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class limitedoffers {

    @SerializedName("offersdata")
    @Expose
    private List<Offersdatum> offersdata = null;
    @SerializedName("message")
    @Expose
    private String message;

    public List<Offersdatum> getOffersdata() {
        return offersdata;
    }

    public void setOffersdata(List<Offersdatum> offersdata) {
        this.offersdata = offersdata;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

}

package com.example.medico.models;


import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;


public class Offersdatum {

    @SerializedName("offercode")
    @Expose
    private String offercode;
    @SerializedName("title")
    @Expose
    private String title;
    @SerializedName("description")
    @Expose
    private String description;

    public String getOffercode() {
        return offercode;
    }

    public void setOffercode(String offercode) {
        this.offercode = offercode;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

}

Ответы [ 2 ]

2 голосов
/ 29 января 2020

Ааа, это моя любимая проблема ...

, чтобы решить эту проблему, вам придется внедрить ваш сериализатор

, для вашего случая вам нужно конвертировать приход объект для массива самостоятельно

1 голос
/ 13 февраля 2020

Я полностью прочитал о Модификация , Модификация будет работать, когда массив будет сериализован идеально.

 "offersdata": [
        {
            "offercode": "GRAB20",
            "title": "Get Upto",
            "description": "20% off on selected merchandise on purchase of INR 1000 or more"
        },
        {
            "offercode": "JAN20",
            "title": "Get Upto",
            "description": "20% Off on all purchases in January"
        },
        {
            "offercode": "BHHH",
            "title": "DES",
            "description": "FDSFS"
        }
    ],
    "message": "success"
}

В приведенном выше Jsonarray offerdata имеет ArrayList

В классе интерфейса необходимо изменить код этого

@GET("user")
Call<List<limitedoffers>>  getoffers();

к этому

@GET("user")
Call<limitedoffers>  getoffers();

Поскольку он не содержит ArrayList

Для получения массива из Limitedoffers после ответа Просто используйте

response.body().getOffersdata();

для получения предложений Arraylist

...