How to parse this nested JSON array in android

I need to parse the following Json array nested data into my application. I am confused how to get from this value.

{ "prodCat_list": [ { "prods": [ { "cat_id": "9", "position": "1", "sku": "wwww345" }, { "cat_id": "9", "position": "2", "sku": "coof23" }, { "cat_id": "9", "position": "3", "sku": "dde45" }, { "cat_id": "9", "position": "4", "sku": "5555" } ] }, { "prods": [ { "cat_id": "9", "position": "1", "sku": "wwww345" }, { "cat_id": "9", "position": "2", "sku": "coof23" }, { "cat_id": "9", "position": "3", "sku": "dde45" }, { "cat_id": "9", "position": "4", "sku": "5555" } ] }, ] } 

Can someone explain to me how to get internal meaning from this.

I tried this

 JSONParser parser = new JSONParser(); JSONObject items = parser.getJSONFromUrl(productInfoUrl); try { JSONArray itemsDetails = items.getJSONArray("prodCat_list"); if(itemsDetails.length()>0){ for (int i = 0; i < itemsDetails.length(); i++) { JSONArray productWithCategories = itemsDetails.getJSONArray(i); JSONObject object = productWithCategories.getJSONObject(i); Product productInfo = new Product( object.getString("sku"), object.getInt("cat_id"), object.getInt("position")); ProductDbHandler productDbHandler = new ProductDbHandler(context); productDbHandler.addProducts(productInfo); } } else System.out.println("No product to add"); } catch (JSONException e) { e.printStackTrace(); } } 
+6
source share
6 answers

This is how I think your JSON Parser should look like (there may be some typos, I did not test this code in the editor :)):

 JSONObject mainObj = new JSONOBject(myString); if(mainObj != null){ JSONArray list = mainObj.getJSONArray("prodCat_list"); if(list != null){ for(int i = 0; i < list.length();i++){ JSONObject elem = list.getJSONObject(i); if(elem != null){ JSONArray prods = elem.getJSONArray("prods"); if(prods != null){ for(int j = 0; j < prods.length();j++){ JSONObject innerElem = prods.getJSONObject(j); if(innerElem != null){ int cat_id = innerELem.getInt("cat_id"); int pos = innerElem.getInt("position"); String sku = innerElem.getString("sku"); } } } } } } } 
+19
source

try using

 org.json.simple.JSONValue 

code:

 import org.json.simple.JSONValue; String content = "{...}"; JSONValue.parse(content); 
+1
source

You can use the GSon library. It parses json for various objects that you can access. The dummy code is here:

 ` GSon gSon = new GSon(); ProdCatList prodCatList = gSon.fromJson(---inputStreamReader of your JSon data---,ProdCatList.class);` 
+1
source

Try it!

 //Write your own implementation of json parser JSONParser jParser = new JSONParser(); JSONArray prod_cat = new JSONArray(); JSONArray products = new JSONArray(); JSONObject json = jParser.getJSONFromUrl("your source"); prod_cat = json.getJSONArray("prodCat_list"); for (int i = 0; i < prod_cat.length(); i++) { JSONObject object = prod_cat.getJSONObject(i); products = object.getJSONArray("products"); } 
+1
source

JSONObject reader = new JSONObject (results);

  JSONArray VendorProductsList = reader.getJSONArray("VendorProductsList"); for (int i = 0; i < VendorProductsList.length(); i++) { ebay=new Ebay(); JSONObject elem = VendorProductsList.getJSONObject(i); JSONArray Products = elem.getJSONArray("Products"); for (int j = 0; j < Products.length(); j++) { JSONObject innerElem = Products.getJSONObject(j); //JSONObject ProductName=Products.getJSONObject(j); ebay.setProductName(innerElem.getString("ProductName")); gallery_array.add(ebay); 
0
source

You can just parse it automatically with Gson:

 JSONParser parser = new JSONParser(); JSONObject items = parser.getJSONFromUrl(productInfoUrl); Gson gson = new GsonBuilder().create(); ProdCatResponse prodCatResponse = gson.fromJson(items.toString(), ProdCatResponse.class); 

But in fact, you can parse the JSON response in string form. You do not need to get a response in JSONObject and use toString() .

 JSONParser parser = new JSONParser(); String items = parser.getFromUrl(productInfoUrl); Gson gson = new GsonBuilder().create(); ProdCatResponse prodCatResponse = gson.fromJson(items, ProdCatResponse.class); 

More info about Gson: https://guides.codepath.com/android/Leveraging-the-Gson-Library


This is a sample sample model, you can generate it using http://www.jsonschema2pojo.org .

ProdCatResponse.java

 public class ProdCatResponse { private List <Prod> prods = new ArrayList <Prod> (); public List <Prod> getProds() { return prods; } public void setProds(List < Prod > prods) { this.prods = prods; } } 

Prod.java

 public class Prod { private String catId; private String position; private String sku; public String getCatId() { return catId; } public void setCatId(String catId) { this.catId = catId; } public String getPosition() { return position; } public void setPosition(String position) { this.position = position; } public String getSku() { return sku; } public void setSku(String sku) { this.sku = sku; } } 
0
source

Source: https://habr.com/ru/post/949544/


All Articles