Spring JSON портит ответ от JacksonMessageConverter
У меня в приложении Spring JacksonMessageConverter для возврата ответа JSON. Но прежде чем вернуть JSON, я хотел бы испортить JSON, как указано в Ajax Security - Предотвращение взлома JSON. Возможно ли это сделать при использовании конвертера сообщений?
Обновить
Ищу решение, похожее на этот весенний prefixjson с responsebody, но у меня уже правильно настроена конфигурация. PFB
<bean id="jacksonMessageConverter"
class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="prefixJson" value="true" />
<property name="supportedMediaTypes" value = "text/plain;charset=UTF-8" />
</bean>
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="jacksonMessageConverter"/>
</list>
</property>
</bean>
Но все же возвращаемый JSON не имеет префикса "&&{}".
ПРИМЕЧАНИЕ. Я хотел бы использовать другой префикс для JSON, как описано в разделе Ajax Security - предотвращение перехвата JSON, но даже поддержка по умолчанию, предоставляемая в Джексоне, похоже, не работает. Есть идеи?
2 ответа
Попробуйте отладить MappingJacksonHttpMessageConverter, чтобы увидеть, если prefixJson
равно верно. Если нет, то ваш боб не вводится пропеллером. Если да, посмотрите в writeInternal()
метод класса MappingJacksonHttpMessageConverter. ИТ четко делает то, что вам нужно:
try {
if (this.prefixJson) {
jsonGenerator.writeRaw("{} && ");
}
this.objectMapper.writeValue(jsonGenerator, o);
}
Если вы хотите добавить пользовательский префикс, вам нужно переопределить writeInternal()
и сделай это там.
Более простой подход - расширить MappingJacksonHttpMessageConverter и переопределить метод writeInternal для выполнения таких вещей, как пользовательский префикс и т. Д.