いくつかのJSONオブジェクトをJSON配列に変換しようとしています。私はmysqlデータベースからデータを取得しています。Java EEを使用してJSONオブジェクトのリストをJSON配列に変換するにはどうすればよいですか?
メインクラス::私の現在のコードは、このループを使用している
public class Main
{
ResultSet resultSet=null;
TestDAO testDAO = new TestDAO();
public List<JSONObject> getJsonObject()
{
resultSet = testDAO.getResultSet();
List<JSONObject> resList = JsonServices.getFormattedResult(resultSet);
return resList;
}
public JSONArray getJsonArray() throws Exception {
resultSet = testDAO.getResultSet();
JSONArray jsonArray = new JSONArray();
while (resultSet.next()) {
int total_rows = resultSet.getMetaData().getColumnCount();
JSONObject obj = new JSONObject();
for (int i = 0; i < total_rows; i++) {
obj.put(resultSet.getMetaData().getColumnLabel(i + 1).toLowerCase(), resultSet.getObject(i + 1));
}
jsonArray.put(obj);
}
return jsonArray;
}
public static void main(String args[]) throws Exception
{
Main m = new Main();
List<JSONObject> jObj = m.getJsonObject();
JSONArray jArr = m.getJsonArray();
for(int i=0;i<jArr.length();i++)
{
System.out.println(jArr.get(i));
}
/*for(int i=0;i<jObj.size();i++)
{
System.out.println(jObj.get(i));
}*/
}
}
サービスクラス:この形式で
public class JsonServices
{
public static List<JSONObject> getFormattedResult(ResultSet rs)
{
List<JSONObject> resList = new ArrayList<JSONObject>();
try
{
ResultSetMetaData rsMeta = rs.getMetaData();
int columnCnt = rsMeta.getColumnCount();
List<String> columnNames = new ArrayList<String>();
for(int i=1;i<=columnCnt;i++)
{
columnNames.add(rsMeta.getColumnName(i).toUpperCase());
}
while(rs.next())
{
JSONObject obj = new JSONObject();
for (int i=1;i<=columnCnt;i++)
{
String key = columnNames.get(i-1);
String value = rs.getString(i);
obj.put(key, value);
}
resList.add(obj);
}
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
try
{
rs.close();
}
catch (SQLException e)
{
e.printStackTrace();
}
}
return resList;
}
}
私の現在のループ戻りデータ:私は必要
{"fineloadinmetric":"648265.32","waterlevel":"45.59","fdate":"2017-08-29","discharge":"43391.657","runinthousand":"156.771","courseloadinmetric":"50538.462","mediumloadinmetric":"176808.134","floodflag":"false"}
{"fineloadinmetric":"856793.621","waterlevel":"44.94","fdate":"2017-08-28","discharge":"46843.674","runinthousand":"212.579","courseloadinmetric":"43957.152","mediumloadinmetric":"132528.51","floodflag":"false"}
{"fineloadinmetric":"898789.111","waterlevel":"45.66","fdate":"2017-08-27","discharge":"43436.507","runinthousand":"159.727","courseloadinmetric":"53053.74","mediumloadinmetric":"169307.45","floodflag":"false"}
JSON配列は次のようになります:
[{
name: 'fineloadinmetric',
data: [648265.32, 52503, 57177, 69658, 97031, 119931, 137133, 154175]
}, {
name: 'waterlevel',
data: [45.59, 24064, 29742, 29851, 32490, 30282, 38121, 40434]
}, {
name: 'fdate',
data: [2017-08-29, 2017-08-28, 2017-08-27, 2017-08-26, 2017-08-25, 2017-08-24, 2017-08-23, 2017-08-22]
}, {
name: 'discharge',
data: [43391.657, null, 7988, 12169, 15112, 22452, 34400, 34227]
}, {
name: 'runinthousand',
data: [156.771, 5948, 8105, 11248, 8989, 11816, 18274, 18111]
}, {
name: 'courseloadinmetric',
data: [50538.462, 5948, 8105, 11248, 8989, 11816, 18274, 18111]
}, {
name: 'mediumloadinmetric',
data: [176808.134, 5948, 8105, 11248, 8989, 11816, 18274, 18111]
}, {
name: 'floodflag',
data: [false, true, false, true, false, false, false, true]
}]
データは無視してください。別のサンプルです。 このJSON配列を使用して、Highcharts.jsを使用していくつかのチャートを作成します。
私の答えにコメントして、私はサービスクラスは質問のために必要ではないと推測しますので、私はそれを削除するための編集提案を入れます。また、私の回答や他の人があなたの問題を解決した場合は、投票ボタンの下にあるチェックマークアイコンを使用して問題を解決するようにマークすることができます。 – Haem