java - JSON Java put() 返回字符串,不是 void?放()不工作!;((
问题描述
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
class Edit_Details_OnlyAdmin_Loop {
public void Edit_Details_OnlyAdmin_Loop_main(int Option, String newVal, String credUserName, String credPwd) {
try {
JSONParser parser = new JSONParser();
JSONArray a = (JSONArray) parser.parse(new FileReader(Main.databasepath));
// System.out.println("a is"+a);
switch (Option) {
case 1:
for (Object o : a) {
// System.out.println("o is"+o);
JSONObject User = (JSONObject) o;
// System.out.println("user is:" + User);
String Username = (String) User.get("Username");
String Pwd = (String) User.get("Password");
// JSONObject new1= (JSONObject) User.get("Name");
if (credUserName.equals(Username) && credPwd.equals(Pwd)) {
// System.out.println(User.remove("Name"));
User.put("Name", newVal);
// System.out.println("updated successfully");
}
}
break;
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
}
}
上面的代码,在for循环中,我试图系统打印.put并返回一个值而不是void函数的json .put()...... 我只想使用.put替换我在json文件中的值()... 传递的参数全部正确,已一一核对
下面是我的数据库文件
[{"Role":"1","AssesType":"","Username":"","Module":"","Marks":"","Name":"q","Password":"123","Programme":""},{"Role":"3","AssesType":"1","Username":"tp054660","Module":"2","Marks":"","Name":"yaphanyee","Password":"123","Programme":"1"},{"Role":"3","AssesType":"2","Username":"tp054660","Module":"2","Marks":"","Name":"yaphanyee","Password":"123","Programme":"1"},{"Role":"1","AssesType":"","Username":"jsn","Module":"","Marks":"","Name":"jason","Password":"123","Programme":""},{"Role":"1","AssesType":"","Username":"123","Module":"","Marks":"","Name":"tp054660","Password":"123","Programme":""}]
上面的代码演示了更改存储为键“名称”的值并替换为新输入数据的工作......
并且 put() 没有按预期工作,也没有任何 catch 错误
解决方案
如果您想查看文件中的任何实际更改,您需要将更改后的 JSON 数据写入磁盘。
使用类似于以下的代码(我不完全确定您的某些数据类型,因此可能会有轻微的编译错误):
try (FileWriter file = new FileWriter(Main.databasepath)) {
file.write(a.toJSONString());
file.flush();
} catch (IOException e) {
e.printStackTrace();
}
推荐阅读
- python - 为什么 python2 在不同情况下打印 unicode 行为会发生变化?
- python - 在 python 数据框中,如果所有列的值都相同,如何选择行?
- windows - 如何让基于 Qt 的应用程序(例如媒体播放器示例)在 Windows 10 上播放视频
- c++ - 使用 libswresample 重采样音频,重采样后会留下少量噪音
- angular - 无法在 Angular 应用程序中集成完整的 ABAP 代码编辑器
- javascript - Firestore 将项目推送到嵌套数组
- javascript - 无法更改作为字符串传递的 DOM 元素样式
- reactjs - 反应 useState 和 useEffect 嵌套。这个可以吗?
- javascript - k8s从nodejs应用程序读取secert
- c# - 如何在 HostingStartup 中注册中间件?