我正在嘗試將JSON文件讀入數據結構,以便可以計算一堆元素。讀取和寫入JSON文件Java
JSON文件格式爲[{String, String, [], String } ... ]
。現在在這個對象數組中,我需要找到第一個字符串字段(比方說關聯)與數組字段(成員名稱)的關係。我需要弄清楚每個成員有多少個關聯。
我目前正在使用json-simple,這是我如何做到的。
Object obj = parser.parse(new FileReader("c://Users/James McNulty/Documents/School/CMPT 470/Ex 4/exer4-courses.json"));
JSONArray jsonArray = (JSONArray) obj;
ArrayList<JSONObject> courseInfo = new ArrayList<JSONObject>();
Iterator<JSONObject> jsonIterator = jsonArray.iterator();
while (jsonIterator.hasNext()) {
courseInfo.add(jsonIterator.next());
count++;
//System.out.println(jsonIterator.next());
}
//System.out.println(count);
String course = "";
String student = "";
ArrayList<JSONArray> studentsPerCourse = new ArrayList<JSONArray>();
for (int i=0; i<count; i++) {
course = (String) courseInfo.get(i).get("course");
studentsPerCourse.add((JSONArray) courseInfo.get(i).get("students"));
System.out.println(course);
System.out.println(studentsPerCourse.get(i));
}
ArrayList<String> students = new ArrayList<String>();
for (int i=0; i<count; i++) {
for (int j=0; j< (studentsPerCourse.get(i).size()); j++) {
students.add((String) studentsPerCourse.get(i).get(j));
//System.out.println(studentsPerCourse.get(i).get(j));
}
//System.out.println(student);
}
JSONObject object = new JSONObject();
Map<String, Integer> studentCourses = new HashMap<String, Integer>();
Set<String> unique = new HashSet<String>(students);
for (String key : unique) {
studentCourses.put(key, Collections.frequency(students, key));
object.put(key, Collections.frequency(students, key));
//System.out.println(key + ": " + Collections.frequency(students, key));
}
FileWriter file = new FileWriter("c://Users/James McNulty/Documents/School/CMPT 470/Ex 4/output.json");
file.write(object.toJSONString());
file.flush();
file.close();
System.out.print(object);
想知道在simple-json本身中是否有更簡單的方法,或者是否有更好的其他庫。
感謝您的輸入傢伙。我想我以我自己的方式計算出來,但是我無法將結果寫入JSON文件。 – rexbelia