Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JSON Java put()返回字符串,不是void?put()不工作;((_Java_Json - Fatal编程技术网

JSON Java put()返回字符串,不是void?put()不工作;((

JSON Java put()返回字符串,不是void?put()不工作;((,java,json,Java,Json,在上面的代码中,在for循环中,我尝试系统打印.put并返回一个值而不是一个void函数的json.put()。。。 我只想使用.put()替换json文件中的值。 传递的参数全部正确,已逐一检查 下面是我的数据库文件 import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import org.json.simple.JSONArray; import org.j

在上面的代码中,在for循环中,我尝试系统打印.put并返回一个值而不是一个void函数的json.put()。。。 我只想使用.put()替换json文件中的值。 传递的参数全部正确,已逐一检查

下面是我的数据库文件

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();
        }

    }
}
上面的代码演示了如何更改存储为键“Name”的值并替换为新的输入数据


put()也没有按预期工作,没有任何捕获错误

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

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


我真的不明白你的问题。put返回值,不需要字符串“the put()未按预期工作”…因为它工作并且不会引发错误?你期望它产生什么?什么是“选项”?@Stultuske helo Stultuske,put函数不工作,它没有替换json对象中的值问题是,put()不起作用以及如何解决。。appreciated@Stultuske我希望我的数据库对象,该值将被替换并更新为新的onehi@sina,我已经尝试过,但我意识到它将整个文件删除为空白。请将该代码添加到您的问题中,因为这可能是您的错误所在。您将无法看到错误除非您将其写入磁盘,否则请在文件中执行nge。到目前为止,您发布的代码看起来不错(除非您没有写入磁盘).嗨,新浪,我现在知道了。我没有任何步骤来访问文件,对吗?然后我想,需要补充什么,对不起,我不明白你的评论。你能试着解释一下吗?我成功地解决了,新浪,谢谢,我爱你,非常感谢你,。。
[{"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":""}]
try (FileWriter file = new FileWriter(Main.databasepath)) {
    file.write(a.toJSONString());
    file.flush();
} catch (IOException e) {
    e.printStackTrace();
}