JSON将数据库解析为String

时间:2012-11-29 17:42:12

标签: java json

我创建了一个使用JSON作为数据库的应用程序,它似乎写得很好,文件阅读器可以很好地读取数据库,但我似乎无法从数据库值中获取数据库值。

这是我的解析代码:

  String userEnteredString = UserEntered.getText(); 
    String userHomeLocal = Tutschedule.userHome; 
    Reader dataFile = null; 
    try {
        dataFile = new FileReader(userHomeLocal+"/Users/"+userEnteredString+".data");
    } catch (FileNotFoundException ex) {
        Logger.getLogger(LoginForm.class.getName()).log(Level.SEVERE, null, ex);
    }
    String dbData = dataFile.toString();
    try {
        JSONObject dbObject = new JSONObject(dbData);
    } catch (JSONException ex) {
        Logger.getLogger(LoginForm.class.getName()).log(Level.SEVERE, null, ex);
    }
    System.out.println(dbData); 
    JSONObject dataInfo = new JSONObject(dbData);
    String password = dataInfo.getString("password");
    System.out.println(password); 

    BufferedReader buffered = new BufferedReader(dataFile); 
    String test = null; 
    try { 
        test = buffered.readLine();
    } catch (IOException ex) {
        Logger.getLogger(LoginForm.class.getName()).log(Level.SEVERE, null, ex);
    }

问题是当我打印密码时它没有打印任何东西,导致我认为没有处理密码字段。

这是一个数据库示例:

{"username":"user","password":"test"}

谢谢!

1 个答案:

答案 0 :(得分:3)

我不相信FileReader.toString()正在做你认为它正在做的事情。 FileReader从object继承toString,这意味着它只是打印出引用,而不是文件的内容,但你试图将其解析为JSON。在这种情况下,您应该有一个严重的日志消息。

为了阅读文件的内容,你应该在阅读器上使用read方法,或者让自己轻松一点,并使用commons-io FileUtils #readFileToString或类似的东西。