Как сериализовать карту > для генерации метрики Json объекта - PullRequest
0 голосов
/ 20 апреля 2020

Я пытался сериализовать мой Map<String, Map<MetricName, ? extends Metric>> объект, используя Gson, но я получаю JSON строковый ответ. А также у меня есть значение и имя метрики во внутреннем Map<MetricName, ? extends Metric> Вот мой код выглядит :

@GetMapping(path = "/showRawKafkaMetrics", produces = MediaType.APPLICATION_JSON_VALUE)
    @ResponseBody
    public List<String> getMetrics() throws IOException, ClassNotFoundException {
        List<String> list = new ArrayList<>();
        Gson gson = new Gson();
        for (MessageListenerContainer container : kafkaListenerEndpointRegistry.getListenerContainers()){
            list.add(gson.toJson(container.metrics()));
        }
        return list;
    }

1 Ответ

0 голосов
/ 20 апреля 2020

Я получаю JSON Строка ответа

Ну, вы возвращаете List<String>

Если вы хотите, чтобы Spring вернул JSON, затем добавьте отображение ответа для application/json (что вы сделали; produces = MediaType.APPLICATION_JSON_VALUE)

Если вы ожидаете какой-то ответ, такой как

{
  "foo": {
    "metric": "bar" 
  }
}

Тогда вы не сможете вернуть List<?>, поскольку это Объект / Карта.

В идеале у вас должен быть конкретный класс модели Response для каждого возвращаемого типа.

...