Java: сопоставить и установить в верхний регистр - PullRequest
0 голосов
/ 19 февраля 2019

Под моим пружинным загрузчиком я использую этот метод перезапуска сервиса:

@RequestMapping(value = "objects/{objectId}", method = RequestMethod.GET)
    public HttpEntity<ObjectDTO > getStoreById(@PathVariable("objectId") String storeId) throws DomainResourceNotFoundException {
        Object obj= ObjService.getObjById(objectId).orElseThrow(
                () -> new DomainResourceNotFoundException(Store.class.getSimpleName(), objectId));
        ObjectDTO objDTO = CustomMapperFactory.getMapper().map(obj, ObjectDTO .class);
        return new ResponseEntity<>(objDTO , HttpStatus.OK);
    }

Моя проблема заключается в том, что при отображении результирующий объект ** objDTO ** имеет следующий формат:

"attributeone": "aaa"
"attributetWO": "bbb"

моя цель - преобразовать в верхний регистр, сопоставляя имена атрибутов, в результате в следующем формате:

"ATTRIBUTEONE": "aaa"
"ATTRIBUTEOTWO": "bbb"

Предложения?

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

Общий способ сделать это - расширить и использовать свой собственный PropertyNamingStrategy, например:

@SuppressWarnings("serial")
PropertyNamingStrategy pns = new PropertyNamingStrategy.PropertyNamingStrategyBase() {
    @Override
    public String translate(String propertyName) {
        return propertyName.toUpperCase();
    }

};
ObjectMapper om = new ObjectMapper();
om.setPropertyNamingStrategy(pns);
0 голосов
/ 19 февраля 2019

Ключи JSON отражают имена атрибутов в StoreDTO.В зависимости от библиотеки, которую вы используете для сериализации, вы можете переопределить имена атрибутов с помощью @JSONProperty (com.fasterxml.jackson.annotation.JsonProperty для Джексона, который используется чаще всего):

@JSONProperty("ATTRIBUTEONE")
private String attributeone;

Если вы хотите сделать это длявсе атрибуты, вы можете использовать это:

objectMapper.setPropertyNamingStrategy(
    new PropertyNamingStrategy.UpperCamelCaseStrategy()
)

Но результат будет ATTRIBUTE_ONE, а не ATTRIBUTEONE.Если вам действительно нужен ATTRIBUTEONE, вы можете реализовать свою собственную стратегию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...