首页 > 解决方案 > 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 错误

标签: javajson

解决方案


如果您想查看文件中的任何实际更改,您需要将更改后的 JSON 数据写入磁盘。

使用类似于以下的代码(我不完全确定您的某些数据类型,因此可能会有轻微的编译错误):

try (FileWriter file = new FileWriter(Main.databasepath)) {
    file.write(a.toJSONString());
    file.flush();
} catch (IOException e) {
    e.printStackTrace();
}

推荐阅读