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());
}否则{
重新