gpt4 book ai didi

java - 如何从 JSON 文件中删除项目?

转载 作者:太空宇宙 更新时间:2023-11-04 11:51:36 24 4
gpt4 key购买 nike

我是 JSON 和 GSON 以及 Java 的新手。目前,我在删除 Json 文件中的项目时遇到困难。下面是我的代码

public void removeUser() throws IOException{
File accounts = new File("accounts.json");
delete(accounts);
}

void delete(File acc) throws IOException {
if (acc.exists()) {
List userlist = new ArrayList();
Iterator<Users> iterator = userlist.iterator();
while (iterator.hasNext()) {
if (iterator.next().getUsername().equals(deleteTxt.getText())) {
iterator.remove();
notifications();
deleteTxt.setText(null);
notificationLbl.setText("Wish granted!");

break;

}
}
}
}

以及我的 json 文件结构

{ "username": "admin", "password": "21232f297a57a5a743894a0e4a801fc3", "roles": "admin" }, { "username": "client", "password": "21232f297a57a5a743894a0e4a801fc3", "roles": "client" }

我希望它发生的事情:当我按下deleteBtn时,将执行removeUser(),并且用户和详细信息将被删除。

发生的事情:什么也没发生

谁能指导我如何删除?

最佳答案

从文件读取 jsonarray 、修改为新数组并使用 apache-commons-io.jar 将其存储回来的示例代码

import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;

import org.apache.commons.io.FileUtils;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

public static void delete(String username) throws JSONException, IOException {
File file = new File("E:\\accounts.json");
String encoding = Charset.defaultCharset().toString();
JSONArray oldDataArray = new JSONArray(FileUtils.readFileToString(file, encoding));
System.out.println(oldDataArray);
JSONArray newDataArray = new JSONArray();
for(int n=0;n<oldDataArray.length();n++) {
JSONObject nthObject = oldDataArray.getJSONObject(n);
if(!username.equals(oldDataArray.getJSONObject(n).get("username"))) {
newDataArray.put(nthObject);
}
}
System.out.println(newDataArray);
FileUtils.writeStringToFile(file, newDataArray.toString(), encoding);
}

关于java - 如何从 JSON 文件中删除项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41777942/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com