繁体   English   中英

从 Json 对象解析 Json 数组仅显示列表 Java 中的第一项

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM