2012-11-29 144 views
0

我创建了一个应用程序,使用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"} 

谢谢!

+0

问题是什么?见http://tinyurl.com/so-hints –

+1

@AaronKurtzhals如果你花时间阅读这篇文章,问题就很明显了。 –

+1

如果您发布了上述代码的输出,它将会很有用。即执行'System.out.println(dbData);'时会打印“数据库示例”吗? –

回答

3

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

为了读取文件的内容,您应该在阅读器上使用read方法,或者使自己更容易,并使用commons-io FileUtils#readFileToString或类似方法。