java - JAVA JSON 保存文件
问题描述
这是我第一次在这里问而不是阅读。我正在开发一个将数据库复制到 JSON 文件中的 JAVA 软件。我的问题是我只获取到数据库的最后一行的副本。
这是我的代码
public void getData() throws IOException {
try {
String query = "select * from Productos";
rs = st.executeQuery(query);
System.out.println("Prueba de funcionamiento");
JSONObject jobj = new JSONObject();
while(rs.next()) {
String cdpt= rs.getString("Cod.RefPro");
String name= rs.getString("Nombre");
String desc = rs.getString("Descripcion");
String prec = rs.getString("PrecioNeto");
String pvp = rs.getString("pvp");
String cdp = rs.getString("CodRefProv");
String fam = rs.getString("Familia");
String exis = rs.getString("Existencias");
System.out.println(cdpt);
JSONArray list = new JSONArray();
JSONObject jobja = new JSONObject();
JSONObject jobjb = new JSONObject();
JSONObject jobjc = new JSONObject();
JSONObject jobjd = new JSONObject();
JSONObject jobje = new JSONObject();
JSONObject jobjf = new JSONObject();
JSONObject jobjg = new JSONObject();
JSONObject jobjh = new JSONObject();
jobja.put("crf", cdpt);
jobjb.put("name", name);
jobjc.put("desc", desc);
jobjd.put("pve", prec);
jobje.put("pvp", pvp);
jobjf.put("cdp", cdp);
jobjg.put("familia", fam);
jobjh.put("existencias", exis);
list.add(jobja);
list.add(jobjb);
list.add(jobjc);
list.add(jobjd);
list.add(jobje);
list.add(jobjf);
list.add(jobjg);
list.add(jobjh);
jobj.put("Productos", list);
}
// try-with-resources statement based on post comment below :)
try (FileWriter file = new FileWriter("N:\\file.json")) {
file.write(jobj.toJSONString());
file.flush();
System.out.println("Successfully Copied JSON Object to File...");
System.out.println("\nJSON Object: " + jobj);
}
}catch(Exception ex) {
System.out.println("Error: "+ex);
}
}
}
我会很感激有人帮我解决这个问题
解决方案
JSONObject
延伸Map
。
当您调用 时put
,将向地图添加一个元素。
在您的情况下,每个元素都是使用键“Productos”添加的。
每次放置一个新元素时,它都会覆盖先前添加的元素,因为两者的键相同。
推荐阅读
- reactjs - 为什么我的 react-bootstrap Accordion 不能在小型设备上运行?
- android - 如何将 Watermarkjs 库与离子电容器一起使用?
- html - 网页上的表格?
- c# - 摊销时间表,每月本金减少而不是增加
- linux - 如何使用 SQL-Developer IDE 在 Fedora Linux 上安装和启动 Oracle Database Express Edition (XE) 18c
- json - 序列化linq时需要帮助自己参考循环
- amazon-web-services - 连接 cidrsubnet 分配的两个值?
- opencv - 如何在 CMakefile 中包含库?
- mysql - How to update a table with sum of values from the table itself and another table in MySQL with WHERE clause
- flutter - 当 ListView 未满时,NotificationListener 的 ScrollEndNotification 未第一次调用