java - 读取和写入 JSON 文件 Java

标签 java json

我正在尝试将 JSON 文件读入数据结构,以便计算一堆元素。

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 本身是否有更简单的方法,或者是否有其他更好的库。

最佳答案

Google gson用于编码和解码都非常简单。

最简单的方法是通过简单地让引擎使用反射填充字段,将它们映射到文件内容作为 described here 来填充对象。 : 反序列化只是调用 gson.fromJson(json, MyClass.class); 一旦你创建了你的类。

关于java - 读取和写入 JSON 文件 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10966776/

相关文章:

java - 尝试从 VFS FileObject 获取 ContentInfo 时出现 NullPointer

java - JSON 数据的 Ajax 响应

javascript - 未捕获( promise )SyntaxError : Unexpected end of JSON input

javascript - 使用 list.js 排序/搜索时列表项消失

java - XML 转换后 Java 中 JSON 元素的倒序

javascript - 有什么方法可以替换 vaadin 14 的 window.open 以重定向到外部 url?

java - 找不到Spring Boot Maven插件类

java - SequentialTransition .stop() 不会等到过渡结束其循环

java - 通过 parcelable extra 检索时为空对象

json - 将 []uint8/[]byte 转换为哈希表 GoLang