Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jackson配置自己的json_Java_Json_Jackson - Fatal编程技术网

Java Jackson配置自己的json

Java Jackson配置自己的json,java,json,jackson,Java,Json,Jackson,我开始玩Jackson json,但我在某个点上卡住了。我得到了返回的Json: [ { "id": "1", "groups": [ { "id": "1", "name": "Group99", "students": [ { "studentId

我开始玩Jackson json,但我在某个点上卡住了。我得到了返回的Json:

[
    {
        "id": "1",
        "groups": [
            {
                "id": "1",
                "name": "Group99",
                "students": [
                    {
                        "studentId": "1"
                    },
                    {
                        "studentId": "2"
                    },
                    {
                        "studentId": "3"
                    }
                ],
                "schoolId": 10
            },
            {
                "id": "2",
                "name": "Group100",
                "students": [
                    {
                        "studentId": "1"
                    },
                    {
                        "studentId": "2"
                    },
                    {
                        "studentId": "3"
                    }
                ],
                "schoolId": 10
            }
        ]
    }
]
我希望得到一个JSON,其中没有student数组。像这样

[
    {
        "id": "1",
        "groups": [
            {
                "id": "1",
                "name": "Group99",
                "schoolId": 10
            },
            {
                "id": "2",
                "name": "Group100",
                "schoolId": 10
            }
        ]
    }
]
现在,我从数据库中获取了一个列表,并创建了一个ObjectMapper,它只返回ObjectMapper.writeValueAsString(列表)。如何修改列表,以便在JSON with Jackson中排除学生数组

编辑JAVA代码

我现在拥有的Java代码是

List<Assessment> assessments = (List<Assessment>)   assessmentRepository.findGroupsByUsernameAndAssessmentId(username, assessmentId);
    //2. Convert JSON to Java object
    ObjectMapper mapper = new ObjectMapper();
    // create the new JSON
    List<String> groups = new ArrayList<>();
    for(int i = 0; i <= assessments.size() - 1; i++){
        for(int k = 0; k < assessments.get(i).getGroups().length; k++){
            // create the String with only the wanted information
        }
    }
    return mapper.writeValueAsString(groups); 
List assessments=(List)assessmentRepository.findGroupsByUserName和assessmentId(用户名,assessmentId);
//2. 将JSON转换为Java对象
ObjectMapper mapper=新的ObjectMapper();
//创建新的JSON
列表组=新的ArrayList();

对于(inti=0;i您可以使用Jackson属性为您不想在POJO类中显示的列表设置@JsonIgnore

编辑:/
如果这对您来说很严格,您也可以为对象映射器编写一个函数。在您的情况下,函数应该与工厂一样工作。

注意:您确实应该包括Java类定义,而不仅仅是JSON——数据绑定是从一个转换到另一个再转换回来的艺术;因此仅JSON不足以回答大多数问题。谢谢您的提示,但我想在另一个json中返回属性,因此@JsonIgnore注释不是最合适的。谢谢,这正是我所需要的:)它工作得很好
Assessment assessment = (Assessment) assessmentRepository.findGroupsByUsernameAndAssessmentId(username, assessmentId);
    // 2. Convert JSON to Java object
    ObjectMapper mapper = new ObjectMapper();
    // create the new JSON
    ArrayList<Object> jsonWithoutTeacherAndStudents = new ArrayList<Object>();
    HashMap<String, String> jsonKeyAndValueMap = new HashMap<>(); 
    GroupSummary[] summary = assessment.getGroups();
    for (int i = 0; i < assessment.getGroups().length; i++) {
        jsonKeyAndValueMap.put("id", summary[i].getId());
        jsonKeyAndValueMap.put("name", summary[i].getName());
        jsonKeyAndValueMap.put("schoolId", Integer.toString(summary[i].getSchoolId()));
        jsonWithoutTeacherAndStudents.add(mapper.writeValueAsString(jsonKeyAndValueMap));
    }
    return jsonWithoutTeacherAndStudents.toString();