我已经搜遍了整个互联网,但我无法从pojo类解析我的json数组。应用程序一次又一次崩溃。请任何人都可以告诉我如何从复杂的json响应中解析和显示json数组。这是我的JSON响应。 从此我想解析我的部门名称,描述,产品名称和类别列表。
{ "departmentAndCategory": [
{
"departmentName": "Apparels",
"departmentDescription": "Apparels",
"storeId": null,
"categoryList": [],
"id": 1
},
{
"departmentName": "Footwear",
"departmentDescription": "footwear for men,women and kids",
"storeId": null,
"categoryList": [
{
"departmentId": 10,
"categoryName": "Footwear",
"categoryDescription": "Footwear for men,women and kids",
"parentCategoryId": null
},
{
"departmentId": 10,
"categoryName": "Vehicles",
"categoryDescription": "Two and Four wheelers",
"parentCategoryId": null
}
],
"id": 10
},
{
"departmentName": "Appliances",
"departmentDescription": "TV,Washing Machines,Refrigerators etc.",
"storeId": null,
"categoryList": [
{
"departmentId": 11,
"categoryName": "Appliances",
"categoryDescription": "Appliances for home like TV,Washing Machines,Refrigerators etc.",
"parentCategoryId": null
},
{
"departmentId": 11,
"categoryName": "Vehicles",
"categoryDescription": "Two and Four wheelers",
"parentCategoryId": null
}
],
"id": 11
},
{
"departmentName": "Electronics",
"departmentDescription": "Mobile Phones,Routers etc.",
"storeId": null,
"categoryList": [
{
"departmentId": 12,
"categoryName": "Electronics",
"categoryDescription": "Electrnocs for personal use like Mobile Phones,Routers etc.",
"parentCategoryId": null
}
],
"id": 12
},
{
"departmentName": "Home & Furniture",
"departmentDescription": "All your Home & Furniture needs",
"storeId": null,
"categoryList": [],
"id": 2
},
{
"departmentName": "test",
"departmentDescription": "test",
"storeId": null,
"categoryList": [],
"id": 14
},
{
"departmentName": "apparels",
"departmentDescription": "apparels",
"storeId": null,
"categoryList": [],
"id": 15
},
{
"departmentName": "Levi`s Tshirt",
"departmentDescription": "Levi`s Tshirt",
"storeId": null,
"categoryList": [],
"id": 16
}],"productsAndDeals": [ {
"imageName": null,
"smallImage": null,
"productName": "Levis T-shirt",
"productDescription": "A good fabric from levis",
"productPrice": 2000,
"productInStock": 7,
"productAvailability": "Product is available",
"title": "Clothes",
"dealList": [],
"id": 1
},
{
"imageName": null,
"smallImage": null,
"productName": "skin-fit",
"productDescription": "best blue jeans",
"productPrice": 1000,
"productInStock": 15,
"productAvailability": "Product is available",
"title": "Jeans",
"dealList": [
{
"dealImage": "dev.beacon.interrait.com/resources/deal-1.jpg",
"productsId": 2,
"categoryId": 1,
"expiryDate": null,
"discountPercentage": 60,
"discountAmount": 600,
"isActive": "False",
"dealNotes": null,
"dealName": "Massive discount on skin fit jeans",
"id": 1
}
],
"id": 2
},
{
"imageName": null,
"smallImage": null,
"productName": "bell-bottoms",
"productDescription": "best blue jeans",
"productPrice": 1200,
"productInStock": 15,
"productAvailability": "Product is available",
"title": "Jeans",
"dealList": [
{
"dealImage": "dev.beacon.interrait.com/resources/deal-1.jpg",
"productsId": 3,
"categoryId": 1,
"expiryDate": null,
"discountPercentage": 40,
"discountAmount": 480,
"isActive": "False",
"dealNotes": null,
"dealName": "Massive discount on bell bottoms",
"id": 2
}
],
"id": 3
},
{
"imageName": null,
"smallImage": null,
"productName": "curve-jeans",
"productDescription": "best blue jeans",
"productPrice": 1200,
"productInStock": 15,
"productAvailability": "Product is available",
"title": "Jeans",
"dealList": [
{
"dealImage": "dev.beacon.interrait.com/resources/deal-1.jpg",
"productsId": 4,
"categoryId": 1,
"expiryDate": null,
"discountPercentage": 50,
"discountAmount": 600,
"isActive": "False",
"dealNotes": null,
"dealName": "Massive discount on curve jeans",
"id": 3
}
],
"id": 4
},
{
"imageName": null,
"smallImage": null,
"productName": "Aman",
"productDescription": "",
"productPrice": 1000,
"productInStock": 12,
"productAvailability": "Product is available",
"title": "Tshirt",
"dealList": [],
"id": 6
},
{
"imageName": null,
"smallImage": null,
"productName": "T-shirts for Men",
"productDescription": "New T-shirt collection",
"productPrice": 599,
"productInStock": 0,
"productAvailability": "Product not in stock",
"title": "T-shirts",
"dealList": [],
"id": 7
},
{
"imageName": null,
"smallImage": null,
"productName": "abvgc",
"productDescription": "askkkdd",
"productPrice": null,
"productInStock": 1,
"productAvailability": "Product is available",
"title": "dddrr",
"dealList": [],
"id": 19
},
{
"imageName": null,
"smallImage": null,
"productName": "top",
"productDescription": "askkkdd",
"productPrice": null,
"productInStock": 1,
"productAvailability": "Product is available",
"title": "dddrr",
"dealList": [],
"id": 20
},
{
"imageName": null,
"smallImage": null,
"productName": "topsss",
"productDescription": "askkkdfffd",
"productPrice": null,
"productInStock": 1,
"productAvailability": "Product is available",
"title": "dddrr",
"dealList": [],
"id": 21
},
{
"imageName": null,
"smallImage": null,
"productName": "topsss",
"productDescription": "askkkdfffd",
"productPrice": null,
"productInStock": 1,
"productAvailability": "Product is available",
"title": "dddrr",
"dealList": [],
"id": 22
},
{
"imageName": null,
"smallImage": null,
"productName": "sample",
"productDescription": "sample",
"productPrice": null,
"productInStock": 10,
"productAvailability": "Product is available",
"title": "Product",
"dealList": [],
"id": 23
},
{
"imageName": null,
"smallImage": null,
"productName": "sample",
"productDescription": "sample",
"productPrice": null,
"productInStock": 10,
"productAvailability": "Product is available",
"title": "Product",
"dealList": [],
"id": 24
},
{
"imageName": null,
"smallImage": null,
"productName": "sample",
"productDescription": "sample",
"productPrice": null,
"productInStock": 10,
"productAvailability": "Product is available",
"title": "Product",
"dealList": [],
"id": 25
},
{
"imageName": null,
"smallImage": null,
"productName": "mobile",
"productDescription": "smartphones",
"productPrice": null,
"productInStock": 1,
"productAvailability": "Product is available",
"title": "dddrr",
"dealList": [],
"id": 30
},
{
"imageName": null,
"smallImage": null,
"productName": "Apples",
"productDescription": "fresh apples from farm",
"productPrice": 150,
"productInStock": 90,
"productAvailability": "Product is available",
"title": "Red apples",
"dealList": [],
"id": 31
},
{
"imageName": null,
"smallImage": null,
"productName": "slippers and jackets",
"productDescription": "Slip Ons",
"productPrice": 210,
"productInStock": 45,
"productAvailability": "Product is available",
"title": "Liberty slippes",
"dealList": [],
"id": 110
},
{
"imageName": null,
"smallImage": null,
"productName": "glucose",
"productDescription": "glucone D",
"productPrice": 60,
"productInStock": 123,
"productAvailability": "Product is available",
"title": "Glucose for health",
"dealList": [],
"id": 117
},
{
"imageName": null,
"smallImage": null,
"productName": "jackets",
"productDescription": "rugged jackets",
"productPrice": 210,
"productInStock": 45,
"productAvailability": "Product is available",
"title": "Liberty slippes",
"dealList": [],
"id": 121
},
{
"imageName": null,
"smallImage": null,
"productName": "Stationary",
"productDescription": "pens,pencil",
"productPrice": 10,
"productInStock": 100,
"productAvailability": "Product is available",
"title": "--",
"dealList": [],
"id": 127
},
{
"imageName": null,
"smallImage": null,
"productName": "bat",
"productDescription": "cricket bats",
"productPrice": 500,
"productInStock": 20,
"productAvailability": "Product is available",
"title": "games for kids",
"dealList": [],
"id": 128
},
{
"imageName": null,
"smallImage": null,
"productName": "ball",
"productDescription": "cricket bats",
"productPrice": 500,
"productInStock": 20,
"productAvailability": "Product is available",
"title": "games for kids",
"dealList": [],
"id": 130
},
{
"imageName": null,
"smallImage": null,
"productName": "sports",
"productDescription": "cricket bats",
"productPrice": 500,
"productInStock": 20,
"productAvailability": "Product is available",
"title": "games for kids",
"dealList": [],
"id": 131
},
{
"imageName": null,
"smallImage": null,
"productName": "garden",
"productDescription": "axe",
"productPrice": 500,
"productInStock": 20,
"productAvailability": "Product is available",
"title": "-",
"dealList": [],
"id": 132
}
] }
答案 0 :(得分:0)
在这里,您可以使用以下类来解析您的Response: 创建两个类: 1. DepartmentAndCategory 2. ProductsAndDeals
// DepartmentAndCategory类
公共类DepartmentAndCategory {
private List<CategoryList> categoryList;
private String departmentDescription;
private String departmentName;
public DepartmentAndCategory(String departmentName,String departmentDescription,
List<CategoryList> categoryList){
this.departmentName = departmentName;
this.departmentDescription = departmentDescription;
this.categoryList = categoryList;
}
public List<CategoryList> getCategoryList() {
return categoryList;
}
public void setCategoryList(List<CategoryList> categoryList) {
this.categoryList = categoryList;
}
public String getDepartmentDescription ()
{
return departmentDescription;
}
public void setDepartmentDescription (String departmentDescription)
{
this.departmentDescription = departmentDescription;
}
public String getDepartmentName ()
{
return departmentName;
}
public void setDepartmentName (String departmentName)
{
this.departmentName = departmentName;
}
@Override
public String toString()
{
return "ClassPojo [ categoryList = "+categoryList+", departmentDescription = "+departmentDescription+", departmentName = "+departmentName+"]";
}
}
// ProductsAndDeals类
公共类ProductsAndDeals { private String productName;
public ProductsAndDeals(){}
public ProductsAndDeals(String productName){
this.productName = productName;
}
public String getProductName() {
return productName;
}
public void setProductName(String productName) {
this.productName = productName;
}
@Override
public String toString()
{
return "ClassPojo [productName = "+productName+"]";
}
}
//然后是解析响应的主类
public class MainActivity extends AppCompatActivity {
List<DepartmentAndCategory> departmentAndCategoryList = new ArrayList<>();
List<ProductsAndDeals> productsAndDealsList = new ArrayList<>();
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
int i=0;
//Pass your response String here
ParseResponse(Response.RESPONSE);
String[] departNameArray = new String[departmentAndCategoryList.size()];
//printing Department Name, Department Description and Category List
for (DepartmentAndCategory list : departmentAndCategoryList){
Log.e(TAG,"Departname : "+list.getDepartmentName());
Log.e(TAG,"DepartDesc :"+list.getDepartmentDescription());
departNameArray[i] = list.getDepartmentName();
i++;
for (CategoryList list1 : list.getCategoryList()){
Log.e(TAG,"departmentId "+list1.getDepartmentId());
Log.e(TAG,"categoryName "+list1.getCategoryName());
Log.e(TAG,"categoryDescription "+list1.getCategoryDescription());
Log.e(TAG,"parentCategoryId "+list1.getParentCategoryId());
}
}
//departName array
for (int j=0;j<departNameArray.length;j++){
Log.e(TAG,"DepartName : "+departNameArray[j]);
}
//printing Product Name
for (ProductsAndDeals dealsList : productsAndDealsList){
Log.e(TAG,"Product name : "+dealsList.getProductName());
}
}
private void ParseResponse(String response){
try {
JSONObject rootObj = new JSONObject(response);
JSONArray department = rootObj.optJSONArray("departmentAndCategory");
for (int i=0;i<department.length();i++){
List<CategoryList> mCategoryList = new ArrayList<>();
JSONObject departmentObj = department.getJSONObject(i);
String departName = departmentObj.getString("departmentName");
String departDesc = departmentObj.getString("departmentDescription");
JSONArray categoryArray = departmentObj.optJSONArray("categoryList");
for (int j=0;j<categoryArray.length();j++){
JSONObject categoryObj = categoryArray.getJSONObject(j);
String departId = categoryObj.getString("departmentId");
String categoryName = categoryObj.getString("categoryName");
String categoryDescription = categoryObj.getString("categoryDescription");
String parentCategoryId = categoryObj.getString("parentCategoryId");
CategoryList categoryList = new CategoryList(categoryName,categoryDescription,
departId,parentCategoryId);
mCategoryList.add(categoryList);
}
DepartmentAndCategory departmentAndCategory = new DepartmentAndCategory(
departName,departDesc,mCategoryList
);
departmentAndCategoryList.add(departmentAndCategory);
}
JSONArray product = rootObj.optJSONArray("productsAndDeals");
for (int i=0;i<product.length();i++){
JSONObject productObj = product.getJSONObject(i);
String productName = productObj.getString("productName");
ProductsAndDeals productsAndDeals = new ProductsAndDeals(productName);
productsAndDealsList.add(productsAndDeals);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}