JSON-SIMPLE无法转换为对象来读取数组

时间:2013-09-02 05:23:54

标签: java json json-simple

我正在尝试使用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

1 个答案:

答案 0 :(得分:0)

配置文件中的

module标记不是数组。 JSON数组以[为开头 例如
"module" : [{prop : "One"},{prop : "Two"}]

请改用此代码

JSONObject moduleObject= (JSONObject ) jsonObject.get("module");