При стандартных настройках объект Java сереализуется в неформатированный JSON в данной заметке описано, как перевести его в отфоматированный вид.
Допустим у нас имеется метод возвращающий состояния пользователей следующего вида
При доступе к нему из браузера http://localhost:8080/Test/UsersInfo при стандартных настройках вернется объект в таком виде:
Нам же для удобного просмотра требуется отформотировать этот ответ. Для этого создадим класс настроек WebAppConfig который будет расширять WebMvcConfigurerAdapter.
В новом классе переопределим метод configureMessageConverters таким образом:
Сам вид устанавливается вот этой строкой
В результате получим желаемый вид
Допустим у нас имеется метод возвращающий состояния пользователей следующего вида
@RequestMapping(value = "/UsersInfo", method = { RequestMethod.GET, RequestMethod.POST })
@ResponseBody
public Map<String,Map<String,String>> getUserInfo() {
Map <String,Map<String,String>> usersInfo = new LinkedHashMap<String, Map<String,String>>();
String user = "User 1";
Map<String,String> userInfo = new LinkedHashMap<String,String>();
userInfo.put("Name", "Ivan");
userInfo.put("Status", "Active");
usersInfo.put(user, userInfo);
user = "User 2";
userInfo = new LinkedHashMap<String,String>();
userInfo.put("Name", "Vasya");
userInfo.put("Status", "Passive");
usersInfo.put(user, userInfo);
return usersInfo;
}
При доступе к нему из браузера http://localhost:8080/Test/UsersInfo при стандартных настройках вернется объект в таком виде:
{"User 1":{"Name":"Ivan","Status":"Active"},"User 2":{"Name":"Vasya","Status":"Passive"}}
Нам же для удобного просмотра требуется отформотировать этот ответ. Для этого создадим класс настроек WebAppConfig который будет расширять WebMvcConfigurerAdapter.
В новом классе переопределим метод configureMessageConverters таким образом:
@Configuration
@EnableWebMvc
@ComponentScan("ru.blogspot.codemonkeydeveloper")
public class WebAppConfig extends WebMvcConfigurerAdapter {
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
final MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
final ObjectMapper objectMapper = new ObjectMapper();
objectMapper.enable(SerializationFeature.INDENT_OUTPUT);
converter.setObjectMapper(objectMapper);
converters.add(converter);
super.configureMessageConverters(converters);
}
}
Сам вид устанавливается вот этой строкой
objectMapper.enable(SerializationFeature.INDENT_OUTPUT);
В результате получим желаемый вид
{
"User 1" : {
"Name" : "Ivan",
"Status" : "Active"
},
"User 2" : {
"Name" : "Vasya",
"Status" : "Passive"
}
}
Комментариев нет:
Отправить комментарий