Java 从另一个JSON数组中的JSON数组检索多个JSON对象?

Java 从另一个JSON数组中的JSON数组检索多个JSON对象?,java,android,json,Java,Android,Json,对于大学作业,我需要创建一个应用程序,从一家知名荷兰在线商店的API检索产品数据。我需要将每个产品的标题、摘要、价格和图像URL存储到新的产品对象中。这些产品存储在ArrayList中,然后返回ArrayList products数组中的每个产品都有一个名为“images”的嵌套数组,其中包含6个产品图像。这些图像需要存储到我的产品对象的HashMap属性中,图像大小作为键,URL作为值。然而,我似乎不能把它弄对 带有查询“pokemon”的JSON数据: 产品类别: package com.e

对于大学作业,我需要创建一个应用程序,从一家知名荷兰在线商店的API检索产品数据。我需要将每个产品的标题、摘要、价格和图像URL存储到新的产品对象中。这些产品存储在ArrayList中,然后返回ArrayList

products数组中的每个产品都有一个名为“images”的嵌套数组,其中包含6个产品图像。这些图像需要存储到我的产品对象的HashMap属性中,图像大小作为键,URL作为值。然而,我似乎不能把它弄对

带有查询“pokemon”的JSON数据:

产品类别:

package com.example.bolcombrowser.domain;
导入java.util.Map;
公共类产品{
//属性
私有字符串mTitle;
私有字符串m摘要;
私人双年费;
私有映射mimagerurls;
//建造师
公共产品(字符串mTitle、字符串mSummary、双mPrice、Mapmimagerurls){
this.mTitle=mTitle;
this.mSummary=mSummary;
this.mPrice=mPrice;
this.mImageUrls=mImageUrls;
}
//接球手和接球手
公共字符串getmTitle(){
返回mTitle;
}
公共void setmTitle(字符串mTitle){
this.mTitle=mTitle;
}
公共字符串getmSummary(){
返回mssummary;
}
public void setmSummary(字符串mSummary){
this.mSummary=mSummary;
}
公共双getmPrice(){
退货价格;
}
公共无效定价(双倍定价){
this.mPrice=mPrice;
}
公共映射getImageUrls(){
返回mimagerurl;
}
public void setImageUrls(映射imageUrls){
this.mImageUrls=imageUrls;
}
}
parseJson方法:

publicstaticarraylistparseJson(stringproductjsonstr)抛出JSONException{
/*JSON数组名称*/
最终字符串BOL_PRODUCTS=“PRODUCTS”;
最终字符串BOL_IMAGES=“IMAGES”;
最终字符串BOL_OFFERS=“OFFERS”;
/*JSON键名*/
最终字符串BOL_TITLE=“TITLE”;
最终字符串BOL_SUMMARY=“SUMMARY”;
最终字符串BOL_OFFERDATA=“OFFERDATA”;
最终字符串BOL_PRICE=“PRICE”;
最终字符串BOL_KEY=“KEY”;
最终字符串BOL_URL=“URL”;
/*变量来存储产品数据,然后用于创建新的产品对象*/
字符串标题;
字符串摘要;
双倍价格;
Mapimageurl=newhashmap<>();
/*将产品存储到的ArrayList*/
ArrayListproductList=新的ArrayList<>();
JSONObject productsJson=新的JSONObject(productJsonStr);
JSONArray productsArray=productsjsson.getJSONArray(BOL_PRODUCTS);
对于(int i=0;i
onPostExecute方法:

@覆盖
受保护的void onPostExecute(字符串productData){
if(productData!=null){
ArrayListproductList;
试一试{
productList=JsonUtils.parseJson(productData);
对于(产品:productList){
字符串title=product.getmTitle();
字符串摘要=product.getmSummary();
双倍价格=product.getmPrice();
字符串hashMap=product.getImageUrls().toString();
mTextViewOutput.append(标题+“\n\n”+摘要+“\n\n”+价格+“\n\n”+
hashMap+“\n\n\n\n”);
}
}捕获(JSONException e){
e、 printStackTrace();
}
}
}
当我测试我的应用程序时,它似乎已将上一个产品的图像URL存储到每个产品的HashMap中:

我已经盯着我的代码看了好几个小时,我似乎不知道它为什么会这样做。我可能犯了一个非常愚蠢的错误,但我似乎不知道它到底是什么位于错误的位置。它应该在您的第一个for循环中,否则您将对所有产品使用相同的
Map

...
for (int i = 0; i < productsArray.length(); i++) {
    Map<String, String> imageUrls = new HashMap<>();
...
。。。
对于(int i=0;i

顺便说一句,我建议使用库。它将使您的代码少一些样板文件

非常感谢!这就解决了它。我一定会研究gson。