java从SQL表创建json文件,然后能够查询该文件
我正在尝试实现以下目标(使用Netbeans 11.3):
1.)从SQL表中的列获取数据(字符串)
(二)使用Filewriter将数据转换并保存为JSONArray
(三)查询新创建的JSON文件(output.JSON),以便使用数据填充文本框
我完成了(我认为)1和2;但我一直在思考如何保存输出。json文件,以便可以访问和查询它。顺便说一句,根据我的研究,我认为有更好的方法来完成这些任务(在我看来,php比Java更适合这些任务),但作为一种学习经验,我想尝试完成这项任务
代码如下:
DatabasetoJSONScript.JS
import java.io.FileWriter;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
public class DataBaseToJSon {
public static ResultSet RetrieveData() throws Exception {
String host = "jdbc:derby://localhost:1527/dbname";
String uName = "my Uname";
String uPass = "my Pass";
Connection con = DriverManager.getConnection(host, uName, uPass);
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery ("Select * from Table_Name");
return rs;
}
public static void main (String args[])throws Exception {
JSONObject jsonObject = new JSONObject();
JSONArray array = new JSONArray();
ResultSet rs = RetrieveData();
while (rs.next()) {
JSONObject record = new JSONObject();
record.put("TEXT", rs.getString("TEXT"));
record.put("ANSWER", rs.getString("ANSWER"));
array.add(record);
}
jsonObject.put("RC1", array);
try {
try (FileWriter file = new FileWriter ("C:\\Users\\Owner\\Documents\\NetBeansProjects
\\HTML5Application\\public_html")) {
file.write (jsonObject.toJSONString());
}
} catch(IOException e){
System.out.println("JSON flie created....");
}
}
控制器的相关部分。js
$(document).ready(function (){
var questionBank=new Array;
var currentQuestionNumber;
var currentAnswer;
var numberOfQuestions;
var gamePosition;
var score;
$.getJSON('output.json', function(output) {
numberOfQuestions=output.RC1.length;
for(i=0;i<output.RC1.length;i++){
typeArray=[];
typeArray[1]=output.RC1[i].TEXT;
typeArray[0]=output.RC1[i].ANSWER;
questionBank[i]=typeArray;
}
# 1 楼答案
您可以使用
JSONParser
将文件内容解析为JSON,然后根据您的格式将其转换为JSONObject
或JSONArray
# 2 楼答案
将JDBC结果集转换为JSON对象数组的任务是一项重复性很强的任务,即使它对所有可能的结果集都是一样的。如果可以选择使用第三方库,jOOQ and its SQL/JSON support might be of help。有两种选择:
使用jOOQ的客户端JSON格式化功能
这甚至适用于JDBC
ResultSet
,因此您不需要使用jOOQ来创建查询,尽管您当然可以:还有其他方法可以格式化JSON输出see also the manual about exporting JSON
使用数据库的SQL/JSON支持
在标准SQL中,您始终可以编写:
这将直接在数据库中生成JSON文档。实际语法变化很大,因此您必须调整查询,或者您可以再次使用jOOQ,它为您抽象了以下内容:
免责声明:我为jOOQ背后的公司工作