от
Я запускаю запрос и получаю следующие данные из базы данных.
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 colors = new HashMap();
ColorUsage used;
ColorUsage notUsed;
Integer count;
List results = new ArrayList<>();
Предположим, что результаты вашего запроса доступны с помощью;
data.forEach( row 

Также предположим, что вы можете использовать следующее;

Map 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 к цветам.              

Пожалуйста, войдите или зарегистрируйтесь для публикации ответа на этот вопрос.

1 Ответ

0 голосов
от
Используйте org.json.simple.JSONArray и org.json.simple.JSONObject вместе с картой, чтобы упростить вашу работу.
public JSONObject buildOutPut(List
...