Android 改装-应为BEGIN\u阵列,但BEGIN\u对象是吗?

Android 改装-应为BEGIN\u阵列,但BEGIN\u对象是吗?,android,retrofit2,gson,Android,Retrofit2,Gson,我通过以下改装服务获得了json结果: { "result": { "totalCount": 15, "resultCount": 2, "offset": 0, "limit": 2, "products": [ { "id": 10081, "name": "prod", "pictu

我通过以下改装服务获得了
json
结果:

{
    "result": {
        "totalCount": 15,
        "resultCount": 2,
        "offset": 0,
        "limit": 2,
        "products": [
            {
                "id": 10081,
                "name": "prod",
                "pictureUrl": "url",
                "price": 1,
                "url": "url",
                "briefDescription": "test",
                "description": "test",
                "pictures": [],
                "categoryTitle": "s s",
                "categoryId": 53,
                "extraInfo": {
                    "productProperties": [
                        {
                            "id": 88,
                            "value": "6",
                            "measurementUnit": "s",
                            "title": "s"
                        },
                        {
                            "id": 89,
                            "value": "2",
                            "measurementUnit": "s",
                            "title": "s s"
                        },
                        {
                            "id": 90,
                            "value": "2",
                            "measurementUnit": "s",
                            "title": "s s s s"
                        },
                        {
                            "id": 91,
                            "value": "",
                            "measurementUnit": "",
                            "title": "s s"
                        },
                        {
                            "id": 92,
                            "value": "",
                            "measurementUnit": "",
                            "title": "s s"
                        },
                        {
                            "id": 93,
                            "value": "",
                            "measurementUnit": "",
                            "title": "s"
                        },
                        {
                            "id": 94,
                            "value": "",
                            "measurementUnit": "",
                            "title": "s"
                        }
                    ],
                    "published": false,
                    "preparationTime": 1,
                    "keywords": "",
                    "quantity": 0,
                    "status": 1
                }
            },
            {
                "id": 51,
                "name": "nam3",
                "pictureUrl": "url",
                "price": 495000,
                "url": "url",
                "briefDescription": "sdsds",
                "description": "-",
                "pictures": [],
                "categoryTitle": "x  x x",
                "categoryId": 179,
                "extraInfo": {
                    "productProperties": [
                        {
                            "id": 67,
                            "value": "1000",
                            "measurementUnit": "x",
                            "title": "x x"
                        },
                        {
                            "id": 68,
                            "value": "1050",
                            "measurementUnit": "s",
                            "title": "x x x"
                        },
                        {
                            "id": 69,
                            "value": "",
                            "measurementUnit": "",
                            "title": "x x"
                        },
                        {
                            "id": 70,
                            "value": "",
                            "measurementUnit": "",
                            "title": "x x"
                        },
                        {
                            "id": 71,
                            "value": "",
                            "measurementUnit": "",
                            "title": "xxxx"
                        }
                    ],
                    "published": true,
                    "preparationTime": 2,
                    "keywords": "Aswddfe",
                    "quantity": 93,
                    "status": 1
                }
            }
        ]
    }
} 
而且我对
进行了改装
,变得像贝娄一样:

RetrofitApi.getVendorAdminApi()
        .getAdminProductss(userToken, limit, pageNumber, filters)
        .enqueue(new Callback<List<ProductsModel>>() {
            @Override
            public void onResponse(Call<List<ProductsModel>> call, Response<List<ProductsModel>> response) {
                if (response.isSuccessful()) {
                    resultListener.onSuccess(response.body());
                } else {
                    resultListener.onFailure();
                }
            }

            @Override
            public void onFailure(Call<List<ProductsModel>> call, Throwable t) {
                resultListener.onFailure();
                t.printStackTrace();
            }
        });
下面是我的模特:

public class ProductsModel {

    @SerializedName("result")
    @Expose
    private ResultProducts result;

    public ResultProducts getResult() {
        return result;
    }

    public void setResult(ResultProducts result) {
        this.result = result;
    }

}

您的问题是
应该是BEGIN\u数组,但在第1行第2列路径$

因此,将
列表
更改为
产品模型

  • 如果
    JSON
    JSONArray
    ,则可以将其解析为
    List
    (如
    List

  • 如果
    JSON
    JSONObject
    ,则可以将其解析为
    Object
    (如
    ProductsModel

换成这个

@Override
public void onResponse(Call<ProductsModel> call, Response<ProductsModel> response) {
    if (response.isSuccessful()) {
        resultListener.onSuccess(response.body());
    } else {
        resultListener.onFailure();
    }
}
@覆盖
公共void onResponse(调用、响应){
if(response.issusccessful()){
resultListener.onSuccess(response.body());
}否则{
resultListener.onFailure();
}
}

调用getAdminProductss();

您的问题是
预期的开始数组,但在第1行第2列路径$

因此,将
列表
更改为
产品模型

  • 如果
    JSON
    JSONArray
    ,则可以将其解析为
    List
    (如
    List

  • 如果
    JSON
    JSONObject
    ,则可以将其解析为
    Object
    (如
    ProductsModel

换成这个

@Override
public void onResponse(Call<ProductsModel> call, Response<ProductsModel> response) {
    if (response.isSuccessful()) {
        resultListener.onSuccess(response.body());
    } else {
        resultListener.onFailure();
    }
}
@覆盖
公共void onResponse(调用、响应){
if(response.issusccessful()){
resultListener.onSuccess(response.body());
}否则{
resultListener.onFailure();
}
}

调用getAdminProductss();

将改装呼叫更改为:

RetrofitApi.getVendorAdminApi()
        .getAdminProductss(userToken, limit, pageNumber, filters)
        .enqueue(new Callback<ProductsModel>() {
            @Override
            public void onResponse(Call<ProductsModel> call, Response<ProductsModel> response) {
                if (response.isSuccessful()) {
                    resultListener.onSuccess(response.body());
                } else {
                    resultListener.onFailure();
                }
            }

            @Override
            public void onFailure(Call<ProductsModel> call, Throwable t) {
                resultListener.onFailure();
                t.printStackTrace();
            }
        });
ReformationAPI.getVendorAdminApi()
.getAdminProductss(用户令牌、限制、页码、筛选器)
.enqueue(新的回调函数(){
@凌驾
公共void onResponse(调用、响应){
if(response.issusccessful()){
resultListener.onSuccess(response.body());
}否则{
resultListener.onFailure();
}
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
resultListener.onFailure();
t、 printStackTrace();
}
});
原因是:如果你把
List
放进去,它会检查
JsonArray
,但在你的回答中它是
JsonObject
,因此只要把
List
改成
ProductsModel
就可以解决你的问题


希望有帮助

将改装呼叫更改为:

RetrofitApi.getVendorAdminApi()
        .getAdminProductss(userToken, limit, pageNumber, filters)
        .enqueue(new Callback<ProductsModel>() {
            @Override
            public void onResponse(Call<ProductsModel> call, Response<ProductsModel> response) {
                if (response.isSuccessful()) {
                    resultListener.onSuccess(response.body());
                } else {
                    resultListener.onFailure();
                }
            }

            @Override
            public void onFailure(Call<ProductsModel> call, Throwable t) {
                resultListener.onFailure();
                t.printStackTrace();
            }
        });
ReformationAPI.getVendorAdminApi()
.getAdminProductss(用户令牌、限制、页码、筛选器)
.enqueue(新的回调函数(){
@凌驾
公共void onResponse(调用、响应){
if(response.issusccessful()){
resultListener.onSuccess(response.body());
}否则{
resultListener.onFailure();
}
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
resultListener.onFailure();
t、 printStackTrace();
}
});
原因是:如果你把
List
放进去,它会检查
JsonArray
,但在你的回答中它是
JsonObject
,因此只要把
List
改成
ProductsModel
就可以解决你的问题

希望有帮助

json数据中的“result”节点是一个对象而不是数组。json的模型类如下所示

public class ResponseJSON
{
    private Result result;

    public Result getResult ()
    {
        return result;
    }

    public void setResult (Result result)
    {
        this.result = result;
    }

    @Override
    public String toString()
    {
        return "ClassPojo [result = "+result+"]";
    }
}

public class Result
{
    private String limit;

    private String totalCount;

    private String resultCount;

    private String offset;

    private Products[] products;

    public String getLimit ()
    {
        return limit;
    }

    public void setLimit (String limit)
    {
        this.limit = limit;
    }

    public String getTotalCount ()
    {
        return totalCount;
    }

    public void setTotalCount (String totalCount)
    {
        this.totalCount = totalCount;
    }

    public String getResultCount ()
    {
        return resultCount;
    }

    public void setResultCount (String resultCount)
    {
        this.resultCount = resultCount;
    }

    public String getOffset ()
    {
        return offset;
    }

    public void setOffset (String offset)
    {
        this.offset = offset;
    }

    public Products[] getProducts ()
    {
        return products;
    }

    public void setProducts (Products[] products)
    {
        this.products = products;
    }

    @Override
    public String toString()
    {
        return "ClassPojo [limit = "+limit+", totalCount = "+totalCount+", resultCount = "+resultCount+", offset = "+offset+", products = "+products+"]";
    }
}

public class ProductProperties
{
    private String id;

    private String title;

    private String measurementUnit;

    private String value;

    public String getId ()
    {
        return id;
    }

    public void setId (String id)
    {
        this.id = id;
    }

    public String getTitle ()
    {
        return title;
    }

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

    public String getMeasurementUnit ()
    {
        return measurementUnit;
    }

    public void setMeasurementUnit (String measurementUnit)
    {
        this.measurementUnit = measurementUnit;
    }

    public String getValue ()
    {
        return value;
    }

    public void setValue (String value)
    {
        this.value = value;
    }

    @Override
    public String toString()
    {
        return "ClassPojo [id = "+id+", title = "+title+", measurementUnit = "+measurementUnit+", value = "+value+"]";
    }
}

public class Products
{
    private String id;

    private String price;

    private String categoryTitle;

    private String briefDescription;

    private String pictureUrl;

    private String description;

    private String categoryId;

    private String name;

    private ExtraInfo extraInfo;

    private String[] pictures;

    private String url;

    public String getId ()
    {
        return id;
    }

    public void setId (String id)
    {
        this.id = id;
    }

    public String getPrice ()
    {
        return price;
    }

    public void setPrice (String price)
    {
        this.price = price;
    }

    public String getCategoryTitle ()
    {
        return categoryTitle;
    }

    public void setCategoryTitle (String categoryTitle)
    {
        this.categoryTitle = categoryTitle;
    }

    public String getBriefDescription ()
    {
        return briefDescription;
    }

    public void setBriefDescription (String briefDescription)
    {
        this.briefDescription = briefDescription;
    }

    public String getPictureUrl ()
    {
        return pictureUrl;
    }

    public void setPictureUrl (String pictureUrl)
    {
        this.pictureUrl = pictureUrl;
    }

    public String getDescription ()
    {
        return description;
    }

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

    public String getCategoryId ()
    {
        return categoryId;
    }

    public void setCategoryId (String categoryId)
    {
        this.categoryId = categoryId;
    }

    public String getName ()
    {
        return name;
    }

    public void setName (String name)
    {
        this.name = name;
    }

    public ExtraInfo getExtraInfo ()
    {
        return extraInfo;
    }

    public void setExtraInfo (ExtraInfo extraInfo)
    {
        this.extraInfo = extraInfo;
    }

    public String[] getPictures ()
    {
        return pictures;
    }

    public void setPictures (String[] pictures)
    {
        this.pictures = pictures;
    }

    public String getUrl ()
    {
        return url;
    }

    public void setUrl (String url)
    {
        this.url = url;
    }

    @Override
    public String toString()
    {
        return "ClassPojo [id = "+id+", price = "+price+", categoryTitle = "+categoryTitle+", briefDescription = "+briefDescription+", pictureUrl = "+pictureUrl+", description = "+description+", categoryId = "+categoryId+", name = "+name+", extraInfo = "+extraInfo+", pictures = "+pictures+", url = "+url+"]";
    }
}

public class ExtraInfo
{
    private String keywords;

    private ProductProperties[] productProperties;

    private String preparationTime;

    private String status;

    private String quantity;

    private String published;

    public String getKeywords ()
    {
        return keywords;
    }

    public void setKeywords (String keywords)
    {
        this.keywords = keywords;
    }

    public ProductProperties[] getProductProperties ()
    {
        return productProperties;
    }

    public void setProductProperties (ProductProperties[] productProperties)
    {
        this.productProperties = productProperties;
    }

    public String getPreparationTime ()
    {
        return preparationTime;
    }

    public void setPreparationTime (String preparationTime)
    {
        this.preparationTime = preparationTime;
    }

    public String getStatus ()
    {
        return status;
    }

    public void setStatus (String status)
    {
        this.status = status;
    }

    public String getQuantity ()
    {
        return quantity;
    }

    public void setQuantity (String quantity)
    {
        this.quantity = quantity;
    }

    public String getPublished ()
    {
        return published;
    }

    public void setPublished (String published)
    {
        this.published = published;
    }

    @Override
    public String toString()
    {
        return "ClassPojo [keywords = "+keywords+", productProperties = "+productProperties+", preparationTime = "+preparationTime+", status = "+status+", quantity = "+quantity+", published = "+published+"]";
    }
}

public class ProductProperties
{
    private String id;

    private String title;

    private String measurementUnit;

    private String value;

    public String getId ()
    {
        return id;
    }

    public void setId (String id)
    {
        this.id = id;
    }

    public String getTitle ()
    {
        return title;
    }

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

    public String getMeasurementUnit ()
    {
        return measurementUnit;
    }

    public void setMeasurementUnit (String measurementUnit)
    {
        this.measurementUnit = measurementUnit;
    }

    public String getValue ()
    {
        return value;
    }

    public void setValue (String value)
    {
        this.value = value;
    }

    @Override
    public String toString()
    {
        return "ClassPojo [id = "+id+", title = "+title+", measurementUnit = "+measurementUnit+", value = "+value+"]";
    }
}
并且回调将是
Callback

您可以通过response.body().getResult().getProducts()获得产品结果

我已经从中生成了模型。如果需要,可以通过引用我给出的模型来创建另一个。json数据中的“result”节点是一个对象而不是数组。json的模型类如下所示

public class ResponseJSON
{
    private Result result;

    public Result getResult ()
    {
        return result;
    }

    public void setResult (Result result)
    {
        this.result = result;
    }

    @Override
    public String toString()
    {
        return "ClassPojo [result = "+result+"]";
    }
}

public class Result
{
    private String limit;

    private String totalCount;

    private String resultCount;

    private String offset;

    private Products[] products;

    public String getLimit ()
    {
        return limit;
    }

    public void setLimit (String limit)
    {
        this.limit = limit;
    }

    public String getTotalCount ()
    {
        return totalCount;
    }

    public void setTotalCount (String totalCount)
    {
        this.totalCount = totalCount;
    }

    public String getResultCount ()
    {
        return resultCount;
    }

    public void setResultCount (String resultCount)
    {
        this.resultCount = resultCount;
    }

    public String getOffset ()
    {
        return offset;
    }

    public void setOffset (String offset)
    {
        this.offset = offset;
    }

    public Products[] getProducts ()
    {
        return products;
    }

    public void setProducts (Products[] products)
    {
        this.products = products;
    }

    @Override
    public String toString()
    {
        return "ClassPojo [limit = "+limit+", totalCount = "+totalCount+", resultCount = "+resultCount+", offset = "+offset+", products = "+products+"]";
    }
}

public class ProductProperties
{
    private String id;

    private String title;

    private String measurementUnit;

    private String value;

    public String getId ()
    {
        return id;
    }

    public void setId (String id)
    {
        this.id = id;
    }

    public String getTitle ()
    {
        return title;
    }

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

    public String getMeasurementUnit ()
    {
        return measurementUnit;
    }

    public void setMeasurementUnit (String measurementUnit)
    {
        this.measurementUnit = measurementUnit;
    }

    public String getValue ()
    {
        return value;
    }

    public void setValue (String value)
    {
        this.value = value;
    }

    @Override
    public String toString()
    {
        return "ClassPojo [id = "+id+", title = "+title+", measurementUnit = "+measurementUnit+", value = "+value+"]";
    }
}

public class Products
{
    private String id;

    private String price;

    private String categoryTitle;

    private String briefDescription;

    private String pictureUrl;

    private String description;

    private String categoryId;

    private String name;

    private ExtraInfo extraInfo;

    private String[] pictures;

    private String url;

    public String getId ()
    {
        return id;
    }

    public void setId (String id)
    {
        this.id = id;
    }

    public String getPrice ()
    {
        return price;
    }

    public void setPrice (String price)
    {
        this.price = price;
    }

    public String getCategoryTitle ()
    {
        return categoryTitle;
    }

    public void setCategoryTitle (String categoryTitle)
    {
        this.categoryTitle = categoryTitle;
    }

    public String getBriefDescription ()
    {
        return briefDescription;
    }

    public void setBriefDescription (String briefDescription)
    {
        this.briefDescription = briefDescription;
    }

    public String getPictureUrl ()
    {
        return pictureUrl;
    }

    public void setPictureUrl (String pictureUrl)
    {
        this.pictureUrl = pictureUrl;
    }

    public String getDescription ()
    {
        return description;
    }

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

    public String getCategoryId ()
    {
        return categoryId;
    }

    public void setCategoryId (String categoryId)
    {
        this.categoryId = categoryId;
    }

    public String getName ()
    {
        return name;
    }

    public void setName (String name)
    {
        this.name = name;
    }

    public ExtraInfo getExtraInfo ()
    {
        return extraInfo;
    }

    public void setExtraInfo (ExtraInfo extraInfo)
    {
        this.extraInfo = extraInfo;
    }

    public String[] getPictures ()
    {
        return pictures;
    }

    public void setPictures (String[] pictures)
    {
        this.pictures = pictures;
    }

    public String getUrl ()
    {
        return url;
    }

    public void setUrl (String url)
    {
        this.url = url;
    }

    @Override
    public String toString()
    {
        return "ClassPojo [id = "+id+", price = "+price+", categoryTitle = "+categoryTitle+", briefDescription = "+briefDescription+", pictureUrl = "+pictureUrl+", description = "+description+", categoryId = "+categoryId+", name = "+name+", extraInfo = "+extraInfo+", pictures = "+pictures+", url = "+url+"]";
    }
}

public class ExtraInfo
{
    private String keywords;

    private ProductProperties[] productProperties;

    private String preparationTime;

    private String status;

    private String quantity;

    private String published;

    public String getKeywords ()
    {
        return keywords;
    }

    public void setKeywords (String keywords)
    {
        this.keywords = keywords;
    }

    public ProductProperties[] getProductProperties ()
    {
        return productProperties;
    }

    public void setProductProperties (ProductProperties[] productProperties)
    {
        this.productProperties = productProperties;
    }

    public String getPreparationTime ()
    {
        return preparationTime;
    }

    public void setPreparationTime (String preparationTime)
    {
        this.preparationTime = preparationTime;
    }

    public String getStatus ()
    {
        return status;
    }

    public void setStatus (String status)
    {
        this.status = status;
    }

    public String getQuantity ()
    {
        return quantity;
    }

    public void setQuantity (String quantity)
    {
        this.quantity = quantity;
    }

    public String getPublished ()
    {
        return published;
    }

    public void setPublished (String published)
    {
        this.published = published;
    }

    @Override
    public String toString()
    {
        return "ClassPojo [keywords = "+keywords+", productProperties = "+productProperties+", preparationTime = "+preparationTime+", status = "+status+", quantity = "+quantity+", published = "+published+"]";
    }
}

public class ProductProperties
{
    private String id;

    private String title;

    private String measurementUnit;

    private String value;

    public String getId ()
    {
        return id;
    }

    public void setId (String id)
    {
        this.id = id;
    }

    public String getTitle ()
    {
        return title;
    }

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

    public String getMeasurementUnit ()
    {
        return measurementUnit;
    }

    public void setMeasurementUnit (String measurementUnit)
    {
        this.measurementUnit = measurementUnit;
    }

    public String getValue ()
    {
        return value;
    }

    public void setValue (String value)
    {
        this.value = value;
    }

    @Override
    public String toString()
    {
        return "ClassPojo [id = "+id+", title = "+title+", measurementUnit = "+measurementUnit+", value = "+value+"]";
    }
}
并且回调将是
Callback

您可以通过response.body().getResult().getProducts()获得产品结果


我已经从中生成了模型。如果需要,您可以通过引用我提供的模型来创建另一个。

作为服务的响应,您有一个带有键“result”的对象,包含一些字段和产品列表(数组,带有键“products”)。您的
ProductsModel
相当不错。但您的改造实施是错误的,应该是:

RetrofitApi.getVendorAdminApi()
        .getAdminProductss(userToken, limit, pageNumber, filters)
        .enqueue(new Callback<ProductsModel>() {
            @Override
            public void onResponse(Call<ProductsModel> call, Response<ProductsModel> response) {
                if (response.isSuccessful()) {
                    resultListener.onSuccess(response.body());
                } else {
                    resultListener.onFailure();
                }
            }

            @Override
            public void onFailure(Call<ProductsModel> call, Throwable t) {
                resultListener.onFailure();
                t.printStackTrace();
            }
        });
ReformationAPI.getVendorAdminApi()
.getAdminProductss(用户令牌、限制、页码、筛选器)
.enqueue(新的回调函数(){
@凌驾
公共void onResponse(调用、响应){
if(response.issusccessful()){
resultListener.onSuccess(response.body());
}否则{
resultListener.onFailure();
}
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
resultListener.onFailure();
t、 printStackTrace();
}
});

更改:将所有
列表
替换为
产品模型

作为服务的响应,您有一个带有键“result”的对象,包含一些字段和产品列表(数组,带有键“products”)。您的
ProductsModel
相当不错。但您的改造实施是错误的,应该是:

RetrofitApi.getVendorAdminApi()
        .getAdminProductss(userToken, limit, pageNumber, filters)
        .enqueue(new Callback<ProductsModel>() {
            @Override
            public void onResponse(Call<ProductsModel> call, Response<ProductsModel> response) {
                if (response.isSuccessful()) {
                    resultListener.onSuccess(response.body());
                } else {
                    resultListener.onFailure();
                }
            }

            @Override
            public void onFailure(Call<ProductsModel> call, Throwable t) {
                resultListener.onFailure();
                t.printStackTrace();
            }
        });
ReformationAPI.getVendorAdminApi()
.getAdminProductss(用户令牌、限制、页码、筛选器)
.enqueue(新的回调函数(){
@凌驾
公共void onResponse(调用、响应){
if(response.issusccessful()){
resultListener.onSuccess(response.body());
}否则{
重新