我是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”, “密码”:“21232f297a57a5a743894a0e4a801fc3”, “角色”:“管理员” }, { “用户名”:“客户”, “密码”:“21232f297a57a5a743894a0e4a801fc3”, “角色”:“客户” }
我希望它发生: 当我按下deleteBtn时,将执行removeUser()并删除用户和详细信息。
事情发生了: 没有任何事情发生
任何人都可以指导我如何删除?
答案 0 :(得分:0)
示例代码从文件中读取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);
}