[英]Parsing Json Array from Json Object shows only first item in the list Java
我正在尝试从 json 对象解析数组列表,如下面的代码,
File file = new File(HomePage.jsonFilePath);
if (file.exists()) {
JSONParser parser = new JSONParser();
try {
Object obj = parser.parse(new FileReader(file));
JSONObject jsonObject = (JSONObject) obj;
System.out.println("Customer json for config customer " + jsonObject.toString());
configuredBranch = (String) jsonObject.get("branch");
configuredSystem = (String) jsonObject.get("system");
expinContainerPath = (String) jsonObject.get("path");
if (isEditable) {
try {
JSONArray customerArray = (JSONArray) jsonObject.get("customer_list");
if (customerArray != null && customerArray.size() > 0) {
Iterator<String> iterator = customerArray.iterator();
while (iterator.hasNext()) {
System.out.println("customer gson" + iterator.next());
customerList.add(iterator.next());
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
}
并且在执行这一行System.out.println("Customer json for config customer "+jsonObject.toString());时,控制台会显示以下 json ;
{"path":"C:\\Users\\Documents","system":"Exp","customer_list":["test","test1"],"branch":"LRD"}
但是在像下面这样迭代和打印时System.out.println("customer gson"+iterator.next()); 它总是打印测试,即 customer_list 中的第一项。 我想显示“customer_list”中的所有项目。 你能建议我这样做吗? 提前致谢。
您在while
循环中两次调用迭代器的next()
方法, while
只调用一次。 所以,重写你的代码:
while (iterator.hasNext()) {
String customer = iterator.next();
System.out.println("Customer " + customer);
customerList.add(customer);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.