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 для выполнения таких вещей, как пользовательский префикс и т. Д.

Другие вопросы по тегам