我正在使用Selenium Webdriver,我创建了一个JSON文件,但是当我使用JSONParser从该文件读取数据时,eclipse显示错误“ JSONParser无法解析为类型” 屏幕截图为
我的代码如给定-
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.text.ParseException;
import java.util.Scanner;
import org.json.JSONException;
import org.json.JSONObject;
import org.json.simple.parser.JSONParser;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import ru.sbtqa.tag.parsers.JsonParser;
public class First {
static void user_auth()throws JSONException
{
Scanner in = new Scanner ( System.in) ;
String username , password ;
System.out.println ("Enter username(reg. no.):-");
username = in.next();
System.out.println (" Enter password:-");
password = in.next();
JSONObject obj = new JSONObject() ;
obj.put("USERNAME" ,username ) ;
obj.put("PASSWORD" ,password ) ;
try (FileWriter file = new FileWriter("data.json"))
{
file.write(obj.toString());
}
catch ( IOException ex )
{
System.out.println(ex);
}
}
public static void main ( String args [ ] )
{
// checking if the file exists or not
// If it is first time
File f = new File("./data.json");
if(f.exists() == false && f.isDirectory()== false ) {
System.out.println("It's your first time...");
user_auth();
}
System.setProperty("webdriver.chrome.driver","/usr/bin/chromedriver");
WebDriver driver = new ChromeDriver();
String url = "http://14.139.108.229/W27/login.aspx?ReturnUrl=%2fw27%2fMyInfo%2fw27MyInfo.aspx" ;
driver.get(url);
int attempt = 2 ;
while ( attempt > 0 )
{
if ( attempt != 2 )
user_auth();
String name , password ;
try
{
FileReader file = new FileReader ( "data.json") ;
JSONParser parser = new JSONParser (file);
Object obj = new Object (parser) ;
JSONObject jsonobj = (JSONObject) obj ;
name = (String)jsonobj.get("USERNAME");
password = (String)jsonobj.get("PASSWORD");
}
catch(FileNotFoundException e ) { e.printStackTrace();}
catch(IOException e ) { e.printStackTrace();}
catch(ParseException e ) { e.printStackTrace();}
catch(Exception e ) { e.printStackTrace();}
driver.findElement(By.xpath("//*[@id=\"txtUserName\"]")).sendKeys(name);
driver.findElement(By.xpath("//*[@id=\"Password1\"]")).sendKeys(password);
WebElement button = driver.findElement(By.xpath("//*[@id=\"Submit1\"]"));
button.click();
if ( driver.getCurrentUrl() == url )
{
attempt -- ;
driver.findElement(By.xpath("//*[@id=\\\"txtUserName\\\"]")).clear();
try
{
FileReader file = new FileReader ( "data.json") ;
JSONParser parser = new JSONParser (file);
Object obj = new Object (parser) ;
JSONObject jsonobj = (JSONObject) obj ;
jsonobj .remove(jsonobj.toString());
if ( attempt == 0 )
{
System.out.println("Wrong UserName or Password");
driver.close();
System.exit(0);
}
System.out.println("ry Re-Login");
}
catch(FileNotFoundException e ) { e.printStackTrace();}
catch(IOException e ) { e.printStackTrace();}
catch(ParseException e ) { e.printStackTrace();}
catch(Exception e ) { e.printStackTrace();}
}
else break ;
}
}
}
我看过this question和this one too 但这不能解决我的问题
答案 0 :(得分:0)
似乎您缺少依赖项json-simple。
1)这是链接JSON.simple » 1.1.1,您可以在其中下载缺少的依赖项。
3)如果您拥有maven或gradle项目,请复制依赖项行。
4)然后清理构建项目并查看魔术。
答案 1 :(得分:0)
在这里,当您遇到类似的错误时; JSONParser显示“不推荐使用构造函数JSONParser()”,因为您没有正确地使用它来获取JSON文件数据,而我已经在示例代码中发布了该文件,您可以从中获得灵感。
import java.io.FileReader;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
public class JsonFileReader {
public static void main(String[] args) {
try {
JSONParser parser = new JSONParser();
JSONObject obj = (JSONObject)parser.parse(new FileReader("L:/data.json"));
String name = (String) obj.get("USERNAME");
String password = (String) obj.get("PASSWORD");
System.out.println("Name: " + name);
System.out.println("Password: " + password);
} catch (Exception ex) {
System.out.println("Exception: "+ ex.getMessage());
}
}
}
注意:在这里,我使用了相同的“ json-simple-1.1.1.jar”文件。
文件:data.json
{
"USERNAME": "abc",
"PASSWORD": "xyz"
}