如何在android中使用两个数组获取JSON数据

时间:2017-08-15 17:39:52

标签: android json

我想从PHP获取一个数组,其中一个文件是一个数组。 如何用jsonArray和jsonObject获取篮子数据? (在下面的代码中,篮子是一个包含5个参数的数组)。

这是我的阵列:

 [{"orderCode":11514,"orderDate":"2017/05/21","orderPrice":"1‌​9200","fullName":"Ja‌​ck","address":"addr 1","cellphone":"09151515730","basket":[{"b_qty":"4","pid":"8‌​","b_price":"9500","‌​b_discount":"10","ti‌​tle":"obj1"}]

修改

  String b_price ="";
    String b_discount="";
    String b_qty ="";
    String ti‌​tle= "";
    String pid="";

    try {
        JSONArray jsonArray = new JSONArray(data);

        for (int i = 0; i < jsonArray.length(); i++) {

            JSONObject object = jsonArray.getJSONObject(i);

            String orderCode = object.getString("orderCode");
            String orderDate = object.getString("orderDate");
            String orderPrice = object.getString("orderPrice");
            String fullName = object.getString("fullName");
            String address = object.getString("address");
            String cellphone = object.getString("cellphone");

            JSONArray orderBasket = object.getJSONArray("basket");

            for (int j = 0; j < orderBasket.length(); j++){
                JSONObject object1 = orderBasket.getJSONObject(j);

                b_qty = object1.getString("b_qty");
                pid = object1.getString("pid");
                b_price = object1.getString("b_price");
                b_discount = object1.getString("b_discount");
                ti‌​tle = object1.getString("ti‌​tle");

            }

            CustomOrderList customOrderList = new CustomOrderList(getApplicationContext());
            customOrderList.orderCode.setText(orderCode);
            customOrderList.orderDate.setText(orderDate);
            customOrderList.orderTotalPrice.setText(orderPrice);
            customOrderList.orderFullName.setText(fullName);
            customOrderList.orderAddress.setText(address);
            customOrderList.orderCellphone.setText(cellphone);

            customOrderList.basketPrice.setText(b_price);
            customOrderList.basketDiscount.setText(b_discount);
            customOrderList.basketTitle.setText(ti‌​tle);

            layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
            linearOrders.addView(customOrderList);
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }

1 个答案:

答案 0 :(得分:-1)

 for (int i = 0; i < jsonArray.length(); i++) {
        JSONObject object = jsonArray.getJSONObject(i);

        String orderCode = object.getString("orderCode");
        String orderDate = object.getString("orderDate");
        String orderPrice = object.getString("orderPrice");
        String fullName = object.getString("fullName");
        String address = object.getString("address");
        String cellphone = object.getString("cellphone");

//Now orderBasket is jsonArray
        JSONArray orderBasket = object.getJSONArray("basket");

 // So fetch all objects from orderBasket array
      for (int j = 0; j < orderBasket.length(); j++){
       JSONObject objectbsk = orderBasket.getJSONObject(j);

        String b_qty = objectbsk.getString("b_qty");
        String pid = objectbsk.getString("pid");
        String b_price = objectbsk.getString("b_price");
        String b_discount = objectbsk.getString("b_discount");
        String ti‌​tle = objectbsk.getString("ti‌​tle");
// Create a orderBasket list for Basket with these keys also as you have created for CustomOrderList and use it
}

        CustomOrderList customOrderList = new CustomOrderList(getApplicationContext());
        customOrderList.orderCode.setText(orderCode);
        customOrderList.orderDate.setText(orderDate);
        customOrderList.orderTotalPrice.setText(orderPrice);
        customOrderList.orderFullName.setText(fullName);
        customOrderList.orderAddress.setText(address);
        customOrderList.orderCellphone.setText(cellphone);
    customOrderList.orderBasket.setText(orderBasket);

// here you can't do set text since it's jsonarray. So use basketlist to show the data`

 layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
            linearOrders.addView(customOrderList);
        }