0

我正在尝试使用 JSON-Simple 使用以下代码读取 JSON 格式的配置文件

    File f = new File("config.json");
    JSONParser parser = new JSONParser();
    try {
        int i;
        StringBuilder out = new StringBuilder();
        FileReader reader = new FileReader(f);
        while ((i = reader.read()) != -1) {
            out.append((char) i);
        }
        JSONArray array = (JSONArray) JSONValue.parse(out.toString());

    } catch (Exception e) {
        System.out.println(e.toString());
    }

或者

    File f = new File("config.json");
    JSONParser parser = new JSONParser();
    try {
        Object obj = parser.parse(new FileReader(f));
        JSONObject jsonObject = (JSONObject) obj;

        JSONArray array = (JSONArray) jsonObject.get("module");
        Iterator<String> itreator = array.iterator();
        while (itreator.hasNext()) {
            System.out.println(itreator.next());
        }
    } catch (FileNotFoundException fnf) {
        fnf.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

但两者都返回错误

org.json.simple.JSONObject cannot be cast to org.json.simple.JSONArray

但是在做的时候

    File f = new File("config.json");
    try {
        System.out.println(JSONValue.parse(new FileReader(f)));
    } catch (Exception e) {
        System.out.println(e.toString());
    }

它返回文件的内容。

配置文件可以在这里看到:http: //pastebin.com/5xJTHSwj

4

1 回答 1

0

module配置文件中的标记不是数组。JSON 数组以[
eg开头
"module" : [{prop : "One"},{prop : "Two"}]

请改用此代码

JSONObject moduleObject= (JSONObject ) jsonObject.get("module");  
于 2013-09-02T05:27:13.480 回答