2017-11-11 84 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