【发布时间】:2020-04-19 04:40:42
【问题描述】:
我正在尝试将 Map> 转换为 JSON 对象。我尝试了两种不同的转换方式。
- 使用 ObjectMapper:
这里的代码看起来像,但返回 null。
@GetMapping("/showRawKafkaMetrics")
public String getMetrics() throws JsonProcessingException {
StringBuilder sb = new StringBuilder();
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
for (MessageListenerContainer messageListenerContainer : kafkaListenerEndpointRegistry
.getListenerContainers()) {
// The below map of metrics I'm trying to convert into json Object
Map<String, Map<MetricName, ? extends Metric>> metrics = messageListenerContainer.metrics();
metrics.forEach((clientid, metricMap) -> {
log.info("Client Id:"+sb.toString());
String json = null;
try {
json = objectMapper.writeValueAsString(metricMap);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
log.info("JSON Metrics :"+json);
metricMap.forEach((metricName, metricValue) -> {
log.info("------------ Metric name: " + metricName.name() + " ----------- Metric value: "
+ metricValue.metricValue() + LINE_BREAK);
});
});
}
String metrics = sb.toString();
return metrics;
}
****2. Using JSON Object
Here is the code looks like:****
@GetMapping("/showRawKafkaMetrics")
public String getMetrics() throws JsonProcessingException {
StringBuilder sb = new StringBuilder();
JsonObject jsonObject = new JsonObject();
for (MessageListenerContainer messageListenerContainer : kafkaListenerEndpointRegistry
.getListenerContainers()) {
// The below map of metrics I'm trying to convert into json Object
// The below map of metrics I'm trying to convert into json Object
Map<String, Map<MetricName, ? extends Metric>> metrics = messageListenerContainer.metrics();
metrics.forEach((clientid, metricMap) -> {
log.info("Client Id:"+sb.toString());
metricMap.forEach((metricName, metricValue) -> {
log.info("------------ Metric name: " + metricName.name() + " ----------- Metric value: "
+ metricValue.metricValue() + LINE_BREAK);
jsonObject.add(metricName.toString(), (JsonElement) metricValue);
log.info("JSON METRICS:"+jsonObject);
});
});
}
String metrics = sb.toString();
return metrics;
}
在这两种情况下,我都会得到空指针。谁能建议我将度量地图转换为 JsonObject 的最佳方法。因此,我可以进一步处理它以创建仪表板。
【问题讨论】:
-
您尝试过 Jackson 和原生 JSON,但您是否尝试过 GSON。
标签: java json jackson gson metrics