Я пытаюсь использовать JMSTemplate для публикации сообщения JSON в теме. Этот код уже существовал в одном приложении, и я просто копировал его в другое, поскольку мы пытаемся объединить два приложения в одно. Я обнаружил, что код теперь отправляет сообщения JSON с первой заглавной буквой для имен полей JSONArray
и JSONObject
.
Я использовал шаблон JMS с конвертером сообщений, который принимает преобразователь объектов для преобразования из POJO в JSON. Единственная реальная разница в моем новом коде заключается в том, что я использую более новую версию весенней загрузки. Я знаю, что это обновит все зависимости Джексона, так что, возможно, именно поэтому произошло это изменение. В итоге я попытался установить стратегию именования на моем объектном картографе, но, похоже, это не сработало. Первоначально я делал это в своем определении бина, но для того, чтобы увидеть, работает ли он на самом деле, я попробовал это до того, как сделал convertAndSend
, и это не сработало. Я все еще получал имена объектов и массивов в верхнем регистре.
public void sendMessage(Object responseToSend) {
objectMapper.setPropertyNamingStrategy(PropertyNamingStrategy.LOWER_CAMEL_CASE);// does not seem to make a difference
try {
System.out.println(objectMapper.writeValueAsString(responseToSend));//prints array and object names with the first letter capitolized
} catch (JsonProcessingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
jmsTemplatePublish.convertAndSend("REDACTED",
responseToSend);
}
Так, например, мое новое приложение отправляет что-то вроде.
"Quote":[{"QuoteInformation":{"Inputs":{"exampleField":false,"ExampleWritten":{"dwelling":true}}
куда раньше это было
"quote":[{"quoteInformation":{"inputs":{"exampleField":false,"exampleWritten":{"dwelling":true}}