2017-11-11 83 views
1

我無法將每個結果集記錄添加到json數組中。 我有從三個表中獲取的數據我強烈jsonarray1中的table1 record1和jsonarray2中的table2 record1的結果等等。 ,最後將組合記錄添加到一個完整記錄的JSON對象中。所以問題是當我打印一個JSON對象給每個記錄準確的數據。現在我正在給JSON數組添加一條記錄。但是當我打印json數組時,它首先顯示準確的記錄,但是當下一次它正在兩次三次打印第二條記錄時。但是我想要第一,第二,第三等將每條記錄存儲到json數組中java

String queryforCustomers="SELECT * FROM customers"; 
     String queryforCustomer="SELECT * FROM customers where id=?"; 
     String queryfortax_info="SELECT * FROM `customer_tax_info` where customer_id=?"; 
     String queryforcustomer_address="SELECT * from customer_address where customer_id=?"; 
     try 
      { 
      //for customer 
       statement=connection.prepareStatement(queryforCustomers); 
       rs1=statement.executeQuery(); 

       JSONObject customerobj=null;//result of customer information 
       JSONObject finalobj1=new JSONObject();//result of every customer records 
       JSONArray customersAll=new JSONArray(); //final result(all data) 

       while(rs1.next()) 
       { 

        int id=rs1.getInt("id"); 
        System.out.println("Id "+id); 
       // for adding kth element to araay 
           statement=connection.prepareStatement(queryforCustomer); 
           statement.setInt(1, id); 
           rs2=statement.executeQuery(); 
           JSONArray arraycustomer=null; 
           arraycustomer=Convertor.convertResultSetIntoJSON(rs2); 
           //System.out.println("Customer Array: "+arraycustomer); 
           rs2.close(); 
           statement.close(); 

             statement=connection.prepareStatement(queryfortax_info); 
             statement.setInt(1, id); 
             rs2=statement.executeQuery(); 
             JSONArray arrayCustomer_tax_info=null; 
             arrayCustomer_tax_info=Convertor.convertResultSetIntoJSON(rs2); 
             //System.out.println("Customer TAx: "+arrayCustomer_tax_info); 
             rs2.close(); 
             statement.close(); 


           statement=connection.prepareStatement(queryforcustomer_address); 
           statement.setInt(1, id); 
           rs3=statement.executeQuery(); 
           JSONArray arrayCustomer_address=null; 
           arrayCustomer_address=Convertor.convertResultSetIntoJSON(rs3); 
           // System.out.println("Customer Address: "+arrayCustomer_address); 
           rs3.close(); 
           statement.close(); 
           finalobj1.put("customer_address",arrayCustomer_address); 
           finalobj1.put("customer_tax_info",arrayCustomer_tax_info); 
           finalobj1.put("customers", arraycustomer); 
           customersAll.put(finalobj1); 
           System.out.println("Final 1 "+finalobj1); 
           System.out.println("Final "+customersAll.toString());    
       } 
       System.out.println("Final "+customersAll.toString()); 
      } 
     catch(Exception e) 
      { 
       e.printStackTrace(); 

      } 




Output { 
"customers": [ 
    { 
     "customer_address": [ 
      { 
       "zip": "171004", 
       "country": "India", 
       "address": "V.PO Chadwal Distt Kathua, Teh Hiranagar Jammu, Jammu and Kashmir in", 
       "as_ship": 1, 
       "city": "Shimla", 
       "created": "2017-10-10 12:59:45.0" 

      } 
     ], 
     "customer_tax_info": [ 
      { 
       "payment_term": "123", 
       "created": "2017-10-10 12:59:45.0", 
       "tax_reg_no": "1235", 
       "id": 1, 
       "customer_id": 1, 
       "pan": "" 
      } 
     ], 
     "customers": [ 
      { 
       "website": "", 
       "user_id": 1, 
       "created": "2017-10-10 12:59:45.0", 
       "company_name": "Trinity", 
       "mobile": "8872406723", 
       "last_name": "Thakur", 
       "id": 1, 
       "first_name": "Aneh", 
       "status": 0 
      } 
     ] 
    }, 
     { 
     "customer_address": [ 
      { 
       "zip": "171004", 
       "country": "India", 
       "address": "V.PO Chadwal Distt Kathua, Teh Hiranagar Jammu, Jammu and Kashmir in", 
       "as_ship": 1, 
       "city": "Shimla", 
       "created": "2017-10-10 12:59:45.0" 

      } 
     ], 
     "customer_tax_info": [ 
      { 
       "payment_term": "123", 
       "created": "2017-10-10 12:59:45.0", 
       "tax_reg_no": "1235", 
       "id": 1, 
       "customer_id": 1, 
       "pan": "" 
      } 
     ], 
     "customers": [ 
      { 
       "website": "", 
       "user_id": 1, 
       "created": "2017-10-10 12:59:45.0", 
       "company_name": "Trinity", 
       "mobile": "8872406723", 
       "last_name": "Thakur", 
       "id": 1, 
       "first_name": "Aneh", 
       "status": 0 
      } 
     ] 
    }, 
     { 
     "customer_address": [ 
      { 
       "zip": "171004", 
       "country": "India", 
       "address": "V.PO Chadwal Distt Kathua, Teh Hiranagar Jammu, Jammu and Kashmir in", 
       "as_ship": 1, 
       "city": "Shimla", 
       "created": "2017-10-10 12:59:45.0" 

      } 
     ], 
     "customer_tax_info": [ 
      { 
       "payment_term": "123", 
       "created": "2017-10-10 12:59:45.0", 
       "tax_reg_no": "1235", 
       "id": 1, 
       "customer_id": 1, 
       "pan": "" 
      } 
     ], 
     "customers": [ 
      { 
       "website": "", 
       "user_id": 1, 
       "created": "2017-10-10 12:59:45.0", 
       "company_name": "Trinity", 
       "mobile": "8872406723", 
       "last_name": "Thakur", 
       "id": 1, 
       "first_name": "Aneh", 
       "status": 0 
      } 
     ] 
    } 

] 

}

回答

1

,我可以在你的代碼中看到您已聲明瞭「customersAll」和「finalobj1」出來的,而循環,其迭代結果集「RS1」,即查詢「queryforCustomers」的一面。

什麼是你的代碼錯誤: 你已經爲你迭代的結果集「RS1」你申報的while循環是正確的,但你不應該申報循環的「finalobj1」外「customersAll」外每次在「customersAll」對象中添加相同的對象。

能否請您修改代碼如下圖所示,檢查

JSONObject customerobj=null;//result of customer information 
JSONArray customersAll=new JSONArray(); //final result(all data) 
while(rs1.next()) 
    { 
     JSONObject finalobj1=new JSONObject(); 
     //"finalobj1" moved to inside of while loop 

      . //rest of your code 
      . 
      . 
    } 
+0

感謝Shivam它的工作 –

+0

@Sanjeev請標記爲接受。 – shivam