我开始玩杰克逊json,但我坚持在某一点。我得到那个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。像这样
[
{
"id": "1",
"groups": [
{
"id": "1",
"name": "Group99",
"schoolId": 10
},
{
"id": "2",
"name": "Group100",
"schoolId": 10
}
]
}
]
现在,我得到一个列表从数据库中,我创建了一个ObjectMapper刚刚返回ObjectMapper.writeValueAsString(列表)。我如何修改这个列表,以便杰克逊在JSON中排除学生数组?
编辑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);
我不知道如果这是正确的方式和我希望有一个更简单的方法
更新 我使用HashMap修复了它。 Java代码在下面找到。让我知道球员,如果这是一个好办法或者有更好的
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();
注意:您确实应该包含Java类定义,而不仅仅是JSON - 数据绑定是从一个转换到另一个转换的艺术;所以只有JSON不足以回答大多数问题。 – StaxMan