Я начинаю играть с Джексоном, но я застрял в какой-то момент. Я получаю, что Json вернулся:Jackson configure own 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 с Jackson был исключен массив учеников?
EDIT JAVA CODE
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);
Я не уверен, что это правильный путь, и я бы ожидать, что есть более простой способ
UPDATE Я исправил его с помощью 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