2017-08-15 55 views
-1

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

这是我的数组:

[{"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(); 
    } 
+0

从添加您的JSON和解释越多,你想要做 –

+0

我看你把 “菜篮子” 作为字符串什么这里。我不完全明白你想达到什么目的,这里的代码不太相关,发布你正在处理的JSON结构!然后告诉我们你想提取什么 – Mercury

+0

我想在我的应用程序的其他细节下显示篮子的数据。]我用这段代码正确获取其他数据,但是我无法使用此代码获取篮子的数据。 – Saeidhp

回答

-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); 
     } 
+0

你可以检查你的代码吗?此代码有错误customOrderList.orderBasket.setText(orderBasket);并且我在这部分中将i更改为j(int j = 0; i Saeidhp

+0

Yaah我已编辑,我到j。你说的第一行是我在我的回答中写道,你不能设置一个jsonarray(orderbasket)。因此,创建一个listoforderbasket ...请阅读我已编辑的答案。希望它有帮助 –

+0

对不起,重复该问题。我不得不编辑我的问题像你的代码,但它不工作too.Please阅读我编辑的问题。 – Saeidhp

相关问题