如何在JAVA中附加数据JSON

如何在JAVA中附加数据JSON,java,json,Java,Json,您好,我有一个json文件,其中的数据如下 [ { "employee": { "firstName": "Rudi", "lastName": "Anton" } }, { "employee": { "firstName": "Syafira", "lastName": "Zarakaria" } } ] 我想将json数据附加到此文件 我的代码现在没有附加数据,请重新写入文件 帮帮我 这是我的

您好,我有一个json文件,其中的数据如下

[
  {
    "employee": {
      "firstName": "Rudi",
      "lastName": "Anton"
    }
  },
  {
    "employee": {
      "firstName": "Syafira",
      "lastName": "Zarakaria"
    }
  }
]
我想将json数据附加到此文件

我的代码现在没有附加数据,请重新写入文件

帮帮我

这是我的密码

    JSONObject employeeDetails = new JSONObject();
    employeeDetails.put("firstName", "Justin");
    employeeDetails.put("lastName", "Saklitinov");

    JSONObject employeeObject = new JSONObject(); 
    employeeObject.put("employee", employeeDetails);


    JSONObject employeeDetails2 = new JSONObject();
    employeeDetails2.put("firstName", "Zara");
    employeeDetails2.put("lastName", "Lovez");

    JSONObject employeeObject2 = new JSONObject(); 
    employeeObject2.put("employee", employeeDetails2);

    //Add employees to list
    JSONArray employeeList = new JSONArray();
    employeeList.add(employeeObject);
    employeeList.add(employeeObject2);

    //Write JSON file
    try{
        String strPath          = "employee.json";
        File strFile = new File(strPath);
        boolean fileCreated = strFile.createNewFile();
       //File appending
        Writer objWriter = new BufferedWriter(new FileWriter(strFile));
        //objWriter.write(employeeList.toJSONString());
        objWriter.flush();
        objWriter.close();
        out.flush();
        out.print("OK");
    } catch (IOException e) {
        e.printStackTrace();
    }

是的,如果你是以对象的形式阅读,以对象的形式书写。这是对同一文件的覆盖。

请尝试BufferedWriter,以便在附加模式下打开文件

BufferedWriter out = new BufferedWriter( 
                   new FileWriter(fileName, true)); 
            out.write(str); 
            out.close(); 

您应该将json文件读入
JSONArray
。将新员工数据添加到此
JSONArray
并将其写入文件。我已经修改了你的一些代码

//读取json文件
String jsonFileStr=新字符串(
文件。readAllBytes(路径
.get(“员工JSON路径”),
标准字符集(UTF_8);
System.out.println(jsonflestr);
JSONArray JSONArray=(JSONArray)新的JSONParser().parse(jsonFileStr);
//创建要添加到json文件的员工数据
JSONObject employeeDetails=新的JSONObject();
employeeDetails.put(“firstName”,“Justin”);
employeeDetails.put(“姓氏”、“Saklitinov”);
JSONObject employeeObject=新的JSONObject();
employeeObject.put(“employee”,employeeDetails);
JSONObject employeeDetails2=新的JSONObject();
employeeDetails2.put(“名字”、“Zara”);
employeeDetails2.put(“lastName”、“Lovez”);
JSONObject employeeObject2=新的JSONObject();
employeeObject2.put(“雇员”,EmployeeDetails 2);
//将数据添加到从json文件读取的jsonArray
jsonArray.put(employeeObject);
jsonArray.put(employeeObject2);
//将jsonArray写回文件
字符串strPath=“员工JSON的路径”;
文件strFile=新文件(strPath);
布尔fileCreated=strFile.createNewFile();
Writer objWriter=new BufferedWriter(new FileWriter(strFile));
write(jsonArray.toString());
objWriter.flush();
objWriter.close();

注意:您可能需要重新考虑在json中多次使用同一个键“employee”。

我想在同一个文件中附加数据给我一个解决方案我也在使用BufferedWriter,嗯,给我举个例子??尝试BufferedWriter在附加模式下打开一个文件。BufferedWriter out=new BufferedWriter(new FileWriter(fileName,true));写出(str);out.close()@最好用代码更新答案,而不是写注释。而且,这个答案看起来更像是一个评论。您可能希望将两个答案合并为一个答案。请添加数据。但是这个括号[重复[{“雇员”:{“名字”:“鲁迪”,“姓氏”:“安东”},{“雇员”:{“名字”:“西菲拉”,“姓氏”:“扎拉卡里亚”}][{“雇员”:{“名字”:“贾斯汀”,“姓氏”:“萨克利蒂诺夫”},{“雇员”:{“名字”:“扎拉”,“姓氏”:“洛夫兹”}]我想要括号内的json数据。不是重复的括号吗?你能帮我吗?抱歉,我试图以代码的形式回答。但不知何故我不能。thx.StandardCharsets.UTF_8无法解析为一种类型你使用的是哪个版本的java?导入java.nio.charset.StandardCharsets;为你编译吗?好的,我已经导入了java.nio,但再次发现错误“构造函数JSONArray(字符串)未定义”我已经导入:org.json.simple.*sir@Smile你能帮我吗?不知道你在使用json simple。我更新了我的答案以反映这一点。我更新了代码,从json str
JSONArray JSONArray=(JSONArray)new JSONParser().parse创建json数组(jsonflestr);