Десериализация JSON: нечитаемые символы

151
14 марта 2018, 05:39

Одно приложение стучится в другое и получает REST-ответ в виде JSON.

String string = mockMvc.perform(get("/health/activity/index/all"))
                .andDo(print())
                .andExpect(status().isOk())
                .andReturn().getResponse().getContentAsString();

Через контроллер:

@RequestMapping(value = "/all", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity<AppGenericEntity<Object>> getAll() {
        ThisOAuth2RestTemplate restTemplate = templateProvider.create(authUtils.createAuthDetails());
        String healthPathActivityIndex = properties.getHealthPathMain().concat(properties
                .getHealthPathActivityIndex()) + "/all";
        return createEntity(ServiceStatus.create(restTemplate.getForObject(healthPathActivityIndex, Object.class)));
    }

В возвращаемом JSON вместо кириллических присутствуют нечитаемые символы:

{"content":[{"id":1000005196,"name":"ТÑениÑовки ÑÑедней ÑÑжеÑÑи 3 Ñаза в неделÑ","index":1.38,"parameters":[1000005326,1000005387]},{"id":1000005197,"name":"ФизиÑеÑÐºÐ°Ñ Ð½Ð°Ð³ÑÑзка оÑÑÑÑÑÑвÑÐµÑ Ð¸Ð»Ð¸ минималÑнаÑ","index":1.2,"parameters":[1000005389]},{"id":1000005198,"name":"ÐнÑенÑивнÑе ÑÑениÑовки 5 Ñаз в неделÑ","index":1.55,"parameters":[1000005265]},{"id":1000005199,"name":"ÐÐ¶ÐµÐ´Ð½ÐµÐ²Ð½Ð°Ñ Ð½Ð°Ð³ÑÑзка + ÑизиÑеÑÐºÐ°Ñ ÑабоÑа","index":1.9,"parameters":[]},{"id":1000005200,"name":"ÐнÑенÑивнÑе ÑÑениÑовки каждÑй денÑ","index":1.73,"parameters":[1000005450]},{"id":1000005201,"name":"ТÑениÑовки каждÑй денÑ","index":1.64,"parameters":[1000005204,1000005511]},{"id":1000005202,"name":"ТÑениÑовки ÑÑедней ÑÑжеÑÑи 5 Ñаз в неделÑ","index":1.46,"parameters":[]}],"pageable":{"sort":{"unsorted":true,"sorted":false},"pageSize":20,"pageNumber":0,"offset":0,"unpaged":false,"paged":true},"totalPages":1,"totalElements":7,"last":true,"first":true,"numberOfElements":7,"sort":{"unsorted":true,"sorted":false},"size":20,"number":0}

При всём этом, в обычных запросах через Postman всё приходит корректно. Конфигурация конвертеров:

@Bean
    public MappingJackson2HttpMessageConverter customJackson2HttpMessageConverter() {
        MappingJackson2HttpMessageConverter jsonConverter = new MappingJackson2HttpMessageConverter();
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        objectMapper.setDateFormat(new SimpleDateFormat(Globals.JSON_DATETIME_FORMAT));
        jsonConverter.setObjectMapper(objectMapper);
        return jsonConverter;
    }
    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        converters.add(customJackson2HttpMessageConverter());
    }

MockMvc конфигурируется следующим образом:

@Before
    public void setUp() throws Exception {
        this.mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
    }
Answer 1

Попробуйте так:

private static final CharacterEncodingFilter CHARACTER_ENCODING_FILTER = new CharacterEncodingFilter();
static {
    CHARACTER_ENCODING_FILTER.setEncoding("UTF-8");
    CHARACTER_ENCODING_FILTER.setForceEncoding(true);
}
@PostConstruct
private void postConstruct() {
    mockMvc = MockMvcBuilders
            .webAppContextSetup(webApplicationContext)
            .addFilter(CHARACTER_ENCODING_FILTER)
            //.apply(springSecurity())
            .build();
}
READ ALSO
как работать с txt с помощью jquery

как работать с txt с помощью jquery

здраствуйте! имеется переменная, так же имеется файл isnotvaluetxt с множеством числовых и буквенных выражений которые недопустимы в переменной...

239
Помогите разобраться с ошибкой D3

Помогите разобраться с ошибкой D3

Пытаюсь написать приложение для построения графиковСкопировал код из примера и все работало

251
Не видит изменения JS

Не видит изменения JS

Не могу понять что не так, на локалхосте все ок работает, заливаю на прод и открывается старый код JS, абсолютно не видит нового файлаИ в html ссылка...

225