我试图在android上使用改型来解析以下json结构。
{
"payload": [
{
"name": "Rice",
"brands": [
{
"name": "Dawat",
"subProducts": [
{
"id": 1,
"name": "Basmati Long Grain",
"creditDays": 20,
"currency": "$",
"willDeliver": false,
"minPrice": 250,
"maxPrice": 400,
"sku": "1Kg",
"uom": ""
}
]
}
]
}
],
"messages": []
}
我用电脑制作模型http://www.jsonschema2pojo.org/. 我特别关注的关键是有效负载-->名称、品牌-->名称和子产品-->名称。下面是我到目前为止所做的尝试。有人能帮忙吗?我无法使用改型解析这个json结构
productDetails.enqueue(new Callback<GetProductDetailsByPhoneNumber>() {
@Override
public void onResponse(Call<GetProductDetailsByPhoneNumber> call, Response<GetProductDetailsByPhoneNumber> response) {
Toast.makeText(getApplicationContext(), "Response mil gaya", Toast.LENGTH_LONG);
List<Payload> subProducts = new ArrayList<Payload>(response.body().payload);
}
@Override
public void onFailure(Call<GetProductDetailsByPhoneNumber> call, Throwable t) {
}
});
接口:
@GET("wholesaler/getProductDetailsByPhoneNumber")
Call<GetProductDetailsByPhoneNumber> getProducts(@Query("phoneNumber") String number);
getdservice()
public API getDService(){
/**
* The Retrofit class generates an implementation of the API interface.
*/
if(service == null){
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(Constants.BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
service = retrofit.create(API.class);
}
return service;
}
payload.java
public class Payload {
public String name;
public List<Brand> brands;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<Brand> getBrands() {
return brands;
}
public void setBrands(List<Brand> brands) {
this.brands = brands;
}
}
3条答案
按热度按时间gopyfrb31#
尝试使用此选项,因为您没有提供“有效负载”对象
zf9nrax12#
在onresponse中使用以下代码:
代码将帮助您反序列化json中的所有数据,并且您可以将其存储在任何需要的地方。另外,我还建议您检查其他响应代码(如400表示错误请求,500表示内部服务器错误等)。看这里,你的有效载荷在一个数组中,其中只有一个元素,这就是为什么我使用
payload.get(0)
. 如果数组中有多个元素,则需要使用循环,然后获取值,品牌和子产品数组也是如此。aoyhnmkz3#
您正在尝试获取一个对象有效负载,并且
这意味着它不是从父级开始的,所以您需要在迭代中使用response.get(position)<--这将是您的有效载荷编号位置,我希望这可以帮助您