目标:将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.");
}
}
答案 0 :(得分:0)
您的对象不同 - 在第一个片段" wallPosts"是一个对象数组(JSONArray),在第二个片段" wallPosts"只是一个JSON对象。
当你第二次运行时,它会出错,因为" wallPosts"不再是JSONArray。