我从JSON文件中获取了一个嵌套的JSON数组(“投资”),但是当我尝试使用它时,该数组似乎为空。
我的JSON文件:
{
"invested": [
{
"email" : "[email protected]",
"password" : "test"
}
],
"notInvested": [
{
"email" : "[email protected]",
"password" : "test"
}
]}
这是我从文件中获取JSONObject的方法:
public JSONObject returnJSONObject(String path) throws JSONException, IOException
{
path = System.getProperty("user.dir") + path;
JSONObject obj = parseJSONFile(path);
return obj;
}
public static JSONObject parseJSONFile(String filename) throws JSONException, IOException
{
String content = new String(Files.readAllBytes(Paths.get(filename)));
Reporter.log(content);
return new JSONObject(content);
}
这就是失败的地方。当我尝试调用'loginPage.login(loginArray.get(0).toString(),loginArray.get(1).toString());';时;
JSONObject validLogins = returnJSONObject("valid-user-logins.json");
JSONArray loginArray = (JSONArray) validLogins.get("invested");
// submit valid credentials
loginPage.login(loginArray.get(0).toString(), loginArray.get(1).toString());
我在运行程序时返回的错误表明我的索引0超出了长度0的范围:
org.json.JSONException: JSONArray initial value should be a string or collection or array.
我对JSON很陌生,所以这一切仍然有些令人困惑,对我做错的任何想法吗?任何帮助将不胜感激!
编辑:为澄清起见,我试图从json文件中的“投资”数组中获取“电子邮件”和“密码”。
您没有从JSON数组中的对象中正确提取电子邮件和密码。
loginArray
包含一个JSON数组,其中包含一个元素,一个JSON对象。loginArray.get(0)
具有以下值:
{
"email" : "[email protected]",
"password" : "test"
}
当您要提取此对象内各个属性的值时,您正在尝试将整个对象转换为字符串。
要获取电子邮件地址,请使用loginArray.getJSONObject(0).getString("email")
。这得到第一个元素出来loginArray
的JSONObject
,然后读取值email
的这个属性JSONObject
为字符串。
要获取密码,请使用loginArray.getJSONObject(0).getString("password")
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句