您好我正在使用json
解析,我从后端获得json
响应并且解析运行良好。但问题是,当我尝试按照响应设置数据时,它只设置最后一个索引。以下是我的代码段和json
响应,任何人都可以帮助我。
现在它显示输出
(在我的第一篇文字视图中)
购买12 Canex + 1剂量免费
(在我的第二篇文本视图中)
购买12 Canex + 1 Dose Free
{
"Data": {
"shippingText": "heyy",
"productOffersList": [
{
"bgColorA": "#ffffff",
"bgColorI": "255*255*255",
"offerLine": [
{
"text": "BUY 6",
"colorA": "#82d7ff",
"colorI": "130*215*255"
},
{
"text": " Canex + 1 Dose Free",
"colorA": "#ff8282",
"colorI": "255*130*130"
}
]
},
{
"bgColorA": "#ffffff",
"bgColorI": "255*255*255",
"offerLine": [
{
"text": "BUY 12",
"colorA": "#65dd63",
"colorI": "101*221*99"
},
{
"text": " Canex + 1 Dose Free",
"colorA": "#ff8282",
"colorI": "255*130*130"
}
]
}
]
},
"Status": 1,
"Message": "",
"UserMessage": ""
}
代码
JSONArray productOffersList=drawerdatas.getJSONArray("productOffersList");
for(int k=0;k<productOffersList.length();k++)
{
JSONObject joofer = productOffersList.getJSONObject(k);
JSONArray offerLine=joofer.getJSONArray("offerLine");
offertextlist=new ArrayList<ProductOffersModel>();
for(int l=0;l<offerLine.length();l++)
{
JSONObject jooferline = offerLine.getJSONObject(l);
ProductOffersModel pom=new ProductOffersModel();
pom.setProductOffers_text(jooferline.getString("text"));
pom.setProductOffers_colorA(jooferline.getString("colorA"));
offertextlist.add(pom);
}
}
for(int v=0;v<offertextlist.size();v++)
{
product_view_offertextfirst.setText(offertextlist.get(v).getProductOffers_text()+" "+offertextlist.get(v).getProductOffers_text());
}
for(int v=0;v<offertextlist.size();v++)
{
product_view_offertexttwo.setText(offertextlist.get(v).getProductOffers_text()+" "+offertextlist.get(v).getProductOffers_text());
}
答案 0 :(得分:1)
因为你正在做一个for循环来设置你在所有优惠上设置的文本视图的文本,最后一个是你能看到的
JSONArray productOffersList=drawerdatas.getJSONArray("productOffersList");
offertextlist=new ArrayList<ProductOffersModel>();
// You were re creating the list array list inside the for loop so you were losing the data from the 1st product.
for(int k=0;k<productOffersList.length();k++)
{
JSONObject joofer = productOffersList.getJSONObject(k);
JSONArray offerLine=joofer.getJSONArray("offerLine");
for(int l=0;l<offerLine.length();l++)
{
JSONObject jooferline = offerLine.getJSONObject(l);
ProductOffersModel pom=new ProductOffersModel();
pom.setProductOffers_text(jooferline.getString("text"));
pom.setProductOffers_colorA(jooferline.getString("colorA"));
offertextlist.add(pom);
}
}
if(offertextlist !=null && offertextlist.size()==4)
{
product_view_offertextfirst.setText(offertextlist.get(0).getProductOffers_text()
+ " " + offertextlist.get(1).getProductOffers_text());
product_view_offertexttwo.setText(offertextlist.get(2).getProductOffers_text()
+ " " + offertextlist.get(3).getProductOffers_text());
}
答案 1 :(得分:0)
尝试使用此解析,
JSONArray productOffersList=drawerdatas.getJSONArray("productOffersList");
for(int k=0;k<productOffersList.length();k++)
{
JSONObject joofer = productOffersList.getJSONObject(k);
JSONArray offerLine=joofer.getJSONArray("offerLine");
offertextlist=new ArrayList<ProductOffersModel>();
ProductOffersModel pom=new ProductOffersModel();
pom.setProductOffers_text
(offerLine.getJSONObject(0).getString("text")+""+
offerLine.getJSONObject(1).getString("text"));
offertextlist.add(pom);
}
for(int v=0;v<offertextlist.size();v++)
{
if(v==0)
{
product_view_offertextfirst.setText
(offertextlist.get(v).getProductOffers_text());
}
else if(v==1)
{
product_view_offertexttwo.setText(
offertextlist.get(v).getProductOffers_text());
}
}
答案 2 :(得分:-1)
对于大型数据集,不建议手动处理JSON数据。你应该使用JSON解析库,Gson可能是一个不错的选择。