无法使用带有Java的JSON.Simple将JSON格式化为.json文件

时间:2016-08-30 19:07:05

标签: java json

目标:将JSONArray数据附加到外部.json文件中的现有JSONArray。

应该是什么样的:

    {"wallPosts": [
            {"userPosts0":[
                {"postText":"This is some post text"},
                {"postUser":"Atloids"},
                {"postDate":"03\/15\/1998"},
                {"postLikes":3}
                ]
            }
          ]
    }

第一次运行代码后它做了什么:

    {"wallPosts": 
            {"userPosts0":[
                {"postText":"This is some post text"},
                {"postUser":"Atloids"},
                {"postDate":"03\/15\/1998"},
                {"postLikes":3}
                ]
            }

    }

第二次运行时的错误代码:

线程“main”中的异常java.lang.ClassCastException:org.json.simple.JSONObject无法强制转换为org.json.simple.JSONArray     在main.Data.main(Data.java:29)

代码:

    try {
        String JSON_FILE="/json/data.json";
        JSONParser parser = new JSONParser();
        FileReader fr = new FileReader(JSON_FILE);

        System.out.println(1);
        Object obj = parser.parse(fr);

        System.out.println(2);
        JSONObject jo = (JSONObject)obj;
        System.out.println(jo);


        System.out.println(3);
        JSONArray wallPostsArray = (JSONArray) jo.get("wallPosts");
        System.out.println(wallPostsArray);


        int numOfWallPosts = wallPostsArray.size();
        System.out.println("Number of Wall Posts: " + numOfWallPosts);

        System.out.println(4);
        JSONArray ja = new JSONArray();

        System.out.println(5);
        JSONObject postText = new JSONObject();
        postText.put("postText", "This is some post text");
        JSONObject postUser = new JSONObject();
        postUser.put("postUser", "James Bond");
        JSONObject postData = new JSONObject();
        postData.put("postDate", "07/07/1997");
        JSONObject postLikes = new JSONObject();
        postLikes.put("postLikes", 3);

        System.out.println(6);
        ja.add(postText);
        ja.add(postUser);
        ja.add(postData);
        ja.add(postLikes);

        System.out.println(7);
        JSONObject userPosts = new JSONObject();
        userPosts.put("userPosts"+numOfWallPosts++, ja);


        wallPostsArray.add(userPosts);
        System.out.println(userPosts);

        jo.put("wallPosts", userPosts);
        System.out.println(jo);

        FileWriter file = new FileWriter(JSON_FILE);

        file.write(jo.toJSONString());
        file.flush();
        file.close();

        System.out.println(wallPostsArray);
    }
    catch(ParseException e){
        System.out.println("No such file exists.");
    }
    catch(IOException io){
        System.out.println("No File.");
    }   
}

1 个答案:

答案 0 :(得分:0)

您的对象不同 - 在第一个片段" wallPosts"是一个对象数组(JSONArray),在第二个片段" wallPosts"只是一个JSON对象。

当你第二次运行时,它会出错,因为" wallPosts"不再是JSONArray。