I am using org.json.JSONObject package to create a JSONArray by filling up values from db, I can get the values from db and put them a key - pair in json, but at the end of the program: key and values are not appended whereas only the last row of array is converted into json object. I want them to be appended in the final json. Any help will be appreciated.
try {
MobileTestClass_Methods.InitializeConfiguration();
String sqlQuery = "SELECT id, NAME FROM campaign LIMIT 4; ";
Connection con = MobileTestClass_Methods.CreateSQLConnection();
String [][] arr = MobileTestClass_Methods
.ExecuteMySQLQueryReturnsArrayWithColumnName(con, sqlQuery);
JSONObject json = new JSONObject();
int totalrow =arr.length;
int totalcolumn =arr[0].length;
System.out.println("row: "+totalrow + " col: "+totalcolumn);
for(int i=1; i
for(int j=0; j
String key = arr[0][j];
String value = arr[i][j];
json.put(key, value);
System.out.println("Key: "+key + " value: "+value);
}
}
System.out.println("Json: "+json);
JSONArray array = new JSONArray();
array.put(json);
JSONObject main = new JSONObject();
main.put("result", array);
System.out.println("Final Json Array: "+main);
} catch(Exception e) {
e.printStackTrace();
System.out.println(e.getMessage());
}
Output:
row: 5 col: 2
Key: id value: 25256
Key: NAME value: megha_video
Key: id value: 32168
Key: NAME value: Mukesh_13Aug_vpaid
Key: id value: 25258
Key: NAME value: vast
Key: id value: 32167
Key: NAME value: SDK-rtb-hudson-130815
Json: {"id":"32167","NAME":"SDK-rtb-hudson-130815"}
Final Json Array: {"result":[{"id":"32167","NAME":"SDK-rtb-hudson-130815"}]}
解决方案
The result of your query returns always the keys id and NAME, so you're overwriting the values continuously.
If you want to have multiple objects with id and NAME properties you should use a JSONArray and create nested JSONObjects inside:
// ... previous code
String [][] arr = MobileTestClass_Methods.ExecuteMySQLQueryReturnsArrayWithColumnName(con, sqlQuery);
JSONArray json = new JSONArray ();
int totalrow =arr.length;
int totalcolumn =arr[0].length;
System.out.println("row: "+totalrow + " col: "+totalcolumn);
for(int i=1; i
{
JSONObject row = new JSONObject();
for(int j=0; j
{
String key = arr[0][j];
String value = arr[i][j];
row.put(key, value);
System.out.println("Key: "+key + " value: "+value);
}
json.put(row);
}
// ... rest of the code ...