1

i have problem to parse my json data,

this is my json data :

{"data":
[
    {"ean": "222222","itemname": "","location": "001010202,001010201","po":[
            {"ponumber": 1,"qty": 22
            },
            {"ponumber": 2,"qty": 33
            }
        ]
    },
    {
        "ean": "11112222",
        "itemname": "เหงือก",
        "location": "001010601",
        "po": [
            {
                "ponumber": 1,
                "qty": 7
            }
        ]
    },
    {
        "ean": "22223333",
        "itemname": "Crystal Water",
        "location": "001010410,001010401",
        "po": [
            {
                "ponumber": 3,
                "qty": 13
            }
        ]
    }
]}

i want to show the output like : enter image description here thank you

this is my java code to parsing json data and show to listview :

 void parseJsonData(String jsonString) throws JSONException {
    String data = "";
    String data2 = null;
    List<String> list = new ArrayList<>();
    JSONObject json = new JSONObject(jsonString);
    JSONArray arrayData = json.getJSONArray("data");
   for (int i = 0; i < arrayData.length(); i++) {
        JSONObject jsonDataArray = arrayData.getJSONObject(i);
        String ean = jsonDataArray.getString("ean");
        String itemname = jsonDataArray.getString("itemname");
        String locations = jsonDataArray.getString("location");
        data =  "\n EAN                 = " + ean +
                "\n Item Name     = " + itemname +"\n";
        JSONArray arrayPO = jsonDataArray.getJSONArray("po");
        for (int j = 0; j < arrayPO.length(); j++ ) {
            JSONObject jsonPO = arrayPO.getJSONObject(j);
            ponumb = jsonPO.getString("ponumber");
            qty = jsonPO.getString("qty");
            //int numb = i + 1;
            data2 = "\n      PO Number   : " + ponumb +
                    "\n      Quantity        : " + qty + "\n";
            list.add(data+data2);
            System.err.println(data+data2);
        }
    }
    ArrayAdapter<String> LVarray;
    LVarray = new ArrayAdapter<String>(ListActivity.this, android.R.layout.simple_list_item_1, list);
    listView.setAdapter(LVarray);
}

this is screen shot the output: enter image description here

Milad Faridnia
  • 9,113
  • 13
  • 65
  • 78
geri putra
  • 13
  • 7

4 Answers4

0

1.You can use StringBuilder to save the data2(po List).

2.In the inner for loop ,you can use append method to add it in it .

3.Get the length of StringBuilder .Then remove the saved data2.

4.Then you can save again .

Edit

public void parseJsonData(String jsonString) throws JSONException {
    String data = "";
    StringBuilder data2 = new StringBuilder();
    List<String> list = new ArrayList<>();
    JSONObject json = new JSONObject(jsonString);
    JSONArray arrayData = json.getJSONArray("data");
    for (int i = 0; i < arrayData.length(); i++) {
        JSONObject jsonDataArray = arrayData.getJSONObject(i);
        String ean = jsonDataArray.getString("ean");
        String itemname = jsonDataArray.getString("itemname");
        String locations = jsonDataArray.getString("location");
        data = "\n EAN                 = " + ean +
                "\n Item Name     = " + itemname + "\n";
        JSONArray arrayPO = jsonDataArray.getJSONArray("po");
        for (int j = 0; j < arrayPO.length(); j++) {
            JSONObject jsonPO = arrayPO.getJSONObject(j);
            ponumb = jsonPO.getString("ponumber");
            qty = jsonPO.getString("qty");
            //int numb = i + 1;
            data2.append("\n      PO Number       : " + ponumb +
                    "\n      Quantity        : " + qty + "\n");
            list.add(data + data2);
        }
        System.err.println(data + data2);
        int sb_length = data2.length();
        data2.delete(0, sb_length);
    }
}
KeLiuyue
  • 8,149
  • 4
  • 25
  • 42
0

this also can help

try {
                        //Get root array
    JSONArray data_array = jsonObject.getJSONArray("data");

                        for (int i=0;i<data_array.length();i++){
                            JSONObject jsonObject1 = array.getJSONObject(i);
                            String ean = jsonObject1.optString("ean");
                            String itemname = jsonObject1.optString("itemname");
                            String location = jsonObject1.optString("location");


                            JSONArray child_Array = jsonObject1.getJSONArray("po");
                            for (int j=0;j<childArray.length();j++){
                                JSONObject childJosnObject = array.getJSONObject(i);
                                String ponumber = jsonObject1.optString("ponumber");
                                String qty = jsonObject1.optString("qty");
                            }
                        }

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
Md Tanbir Hossen
  • 393
  • 4
  • 13
0

You have to try like this, it will help you

JsonParseModel jsonParseModel = new Gson().fromJson(jsonString,JsonParseModel.class);



public class JsonParseModel {

private ArrayList<DataClass> data;

public ArrayList<DataClass> getData() {
    return data;
}

public void setData(ArrayList<DataClass> data) {
    this.data = data;
}

public class DataClass{

        private String ean,itemname,location;

        private ArrayList<PoData> po;

        public String getEan() {
            return ean;
        }

        public void setEan(String ean) {
            this.ean = ean;
        }

        public String getItemname() {
            return itemname;
        }

        public void setItemname(String itemname) {
            this.itemname = itemname;
        }

        public String getLocation() {
            return location;
        }

        public void setLocation(String location) {
            this.location = location;
        }

        public ArrayList<PoData> getPo() {
            return po;
        }

        public void setPo(ArrayList<PoData> po) {
            this.po = po;
        }

        public class PoData{
            private int ponumber,qty;

            public int getPonumber() {
                return ponumber;
            }

            public void setPonumber(int ponumber) {
                this.ponumber = ponumber;
            }

            public int getQty() {
                return qty;
            }

            public void setQty(int qty) {
                this.qty = qty;
            }
        }
    }
}
Raja
  • 2,775
  • 2
  • 19
  • 31
0
    private void parseJsondata(String response) {
                try {
                    // response
                    JSONObject jsonObject = new JSONObject(response);
                    // get data from JSONArray
                    JSONArray data = jsonObject.getJSONArray("data");
                    // for loop to your JSONArray's Strings
                    for (int i = 0; i < data.length(); i++) {
                        //  get JSONObject from i
                        JSONObject jo = data.getJSONObject(i);
                        // get string
                        String ean = jo.getString("ean");
                        String itemname = jo.getString("itemname");
                        String location = jo.getString("location");
                        JSONArray jA = jo.getJSONArray("po");
                        for (int j = 0; j < jA.length(); j++) {
                            //  get JSONObject by jO
                            JSONObject jO = jA.getJSONObject(i);
                            // get string
                            String ponumber = jO.getString("ponumber");
                            String qty = jO.getString("qty");
                        }

                    }
                    //Log response
                    Log.e("response:", response);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
komal akhani
  • 553
  • 6
  • 20