首页 > 解决方案 > 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);
    }
}

}

我会很感激有人帮我解决这个问题

标签: javajson

解决方案


JSONObject延伸Map

当您调用 时put,将向地图添加一个元素。

在您的情况下,每个元素都是使用键“Productos”添加的。

每次放置一个新元素时,它都会覆盖先前添加的元素,因为两者的键相同。


推荐阅读