Я пытаюсь преобразовать объект protobuf в формат JSON, используя com.googlecode.protobuf.format.JsonFormat
, но тип map
получился неожиданным.
Мое сообщение выглядит так
message Response {
repeated Candidate candidates = 1;
map<string, ErrorMessage> errors = 2;
}
message ErrorMessage {
string message = 0;
ErrorType type = 1;
}
enum ErrorType {
ERROR = 0;
WARNING = 1;
}
Проблемаявляется форматом JSON Response
объекта, который я создал
Response response = ...
Return new ResponseEntity<>(new JsonFormat().printToString(response), HttpStatus.OK);
Я ожидаю, что ошибки будут отформатированы как карта с ключом строкового значения (ключа карты)
...
"errors": {
"someID" : {
"message": "blah blah",
"type": "ERROR"
}
}
Однако фактический вывод (я оценил только часть new JsonFormat().printToString(response)
в intellij)
...
"errors": {
"key": "someID",
"value": {
"message": "blah blah",
"type": "ERROR"
}
}
Я надеюсь, что это небольшая конфигурация, которую я пропустил, чтобы сделать protobuf (или Джексона?), Чтобы бытьв курсе фактического значения ключа?не используя «ключ» и «значение».
Кстати, какой смысл иметь буквенные поля "ключ" и "значение" в типе map
?Вы не можете сделать составной поиск с ним, и вы можете просто использовать пользовательский тип / объект.