Я запускаю запрос и получаю следующие данные из базы данных.
painter_id color_id color used
1 100 blue t
1 101 green t
1 102 red f
1 103 black f
1 104 yellow f
2 110 violet t
2 111 cyan t
2 112 brown t
2 113 white f
2 114 orange f
Мне нужна помощь для построения следующего вывода;
{
"colors": {
"1": {
"used": {
"results": [
"blue",
"green"
]
},
"notUsed": {
"results": [
"red",
"black",
"yellow"
]
}
},
"2": {
"used": {
"results": [
"violet",
"cyan",
"brown"
]
},
"notUsed": {
"results": [
"white",
"orange"
]
}
}
}
}
Определение чванства для вывода:
ColorResponse:
type: object
properties:
colors:
type: object
additionalProperties:
$ref: "#/definitions/ColorUsages"
ColorUsages:
type: object
properties:
used:
$ref: "#/definitions/ColorUsage"
notUsed:
$ref: "#/definitions/ColorUsage"
ColorUsage:
type: object
properties:
count:
type: integer
format: int32
description: How many colors are there
results:
type: array
items:
type: string
description: The color name
Где;
Map<String, ColorUsage> colors = new HashMap<String, ColorUsages>();
ColorUsage used;
ColorUsage notUsed;
Integer count;
List<String> results = new ArrayList<>();
Предположим, что результаты вашего запроса доступны с помощью;
data.forEach( row -> row.painter_id(), row.color_id(), row.color(), row.used())
Также предположим, что вы можете использовать следующее:
Map<String, ColorUsages> colors = new HashMap<>();
ColorUsage.Builder usedColorUsage = ColorUsage.builder();
ColorUsage.Builder notUsedColorUsage = ColorUsage.builder();
usedColorUsage.addResultsItem(row.color());
ColorUsages.Builder colorUsagesBuilder = ColorUsages.builder();
ColorUsages colorUsages = colorUsagesBuilder
.used(usedColorUsage.build())
.notUsed(notUsedColorUsage.build())
.build();
colors.put(row.painter_id(), colorUsages);
В настоящее время я получаю данные, делаю небольшие обновленияи сохранить его в TreeBasedTable.Затем я перебираю цвета и должен создать объекты usedColorUsage и notUsedColorUsage для художника.Затем мне нужно добавить usedColorUsage и notUsedColorUsage к colorUsages.Наконец, мне нужно добавить сопоставленную комбинацию painter_id и colorUsages к цветам.