Я использую аннотацию @JsonView
для вывода упрощенной версии сложного объекта в Spring MVC.
Вид:
public class UserView {
public interface Summary {}
}
Класс сущности:
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@Column(name = "name", length = 255)
@JsonView(UserView.Summary.class)
private String name;
Ресурсный метод:
@GetMapping(value = "users", produces = {MediaType.APPLICATION_XML_VALUE, MediaType.APPLICATION_JSON_UTF8_VALUE})
@JsonView(UserView.Summary.class)
public List<User> getAllUsers() {
return userRepository.findAllBy();
}
Это отлично работает при выводе JSON:
[
{"name": "User 1"},
{"name": "User 2"}
]
Но когда «Content-Type» установлен в XML, возвращается следующий вывод:
<List>
<item>
<name>User 1</name>
</item>
<item>
<name>User 2</name>
</item>
</List>
Я хотел бы иметь <Users>
вместо <List>
и <User>
вместо <item>
, но я не смог найти способ изменить эти общие имена. Я пробовал такие аннотации, как @XmlRootElement(name="user")
или @XmlElementWrapper(name="users")
, но безуспешно.