[SPRING] @JsonView와 Spring MVC 사용하기
SPRING@JsonView와 Spring MVC 사용하기
다음 bean 정의를 사용하여 Spring 애플 리케이션이 JSON에서 이야기하도록 만든다.
<bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />
이 메시지 변환기 Bean을 사용하여 @JsonView 주석을 사용할 수 있습니까?
해결법
-
==============================
1.@JsonView는 v1.4부터 Jackson JSON 프로세서에서 이미 지원됩니다.
@JsonView는 v1.4부터 Jackson JSON 프로세서에서 이미 지원됩니다.
새 편집 : Jackson 1.9.12 용으로 업데이트되었습니다.
v1.8.4 설명서에 따르면 writeValueUsingView를 사용하는 함수는 이제 더 이상 사용되지 않습니다. ObjectMapper.viewWriter (java.lang.Class)를 대신 사용하십시오 ... 그러나 1.9부터는 사용되지 않으므로 writerWithView (Class)를 대신 사용하십시오! (v1.9.9 문서 참조)
그래서 여기에 .writerWithView (Views.Public.class)를 사용하고 있기 때문에 확장 된 {name : "name"}이 아닌 {id : 1}을 반환하는 Spring 3.2.0과 Jackson 1.9.12로 테스트 한 업데이트 된 예제가 있습니다. ). Views.ExtendPublic.class로 전환하면 { "id": 1, "name": "name"}이됩니다.
package com.demo.app; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.codehaus.jackson.map.annotate.JsonView; import org.codehaus.jackson.map.ObjectMapper; import org.codehaus.jackson.map.ObjectWriter; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @Controller public class DemoController { private final ObjectMapper objectMapper = new ObjectMapper(); @RequestMapping(value="/jsonOutput") @ResponseBody public String myObject(HttpServletResponse response) throws IOException { ObjectWriter objectWriter = objectMapper.writerWithView(Views.Public.class); return objectWriter.writeValueAsString(new MyObject()); } public static class Views { static class Public {} static class ExtendPublic extends Public {} } public class MyObject { @JsonView(Views.Public.class) Integer id = 1; @JsonView(Views.ExtendPublic.class) String name = "name"; } }
이전 편집 : ObjectMapper를 인스턴스화하고 여기에 표시된대로 또는이 예제에서 사용자 정의보기를 사용하여 객체를 작성해야합니다.
보기 정의 :
class Views { static class Public {} static class ExtendedPublic extends PublicView {} ... } public class Thing { @JsonView(Views.Public.class) Integer id; @JsonView(Views.ExtendPublic.class) String name; }
보기 사용 :
private final ObjectMapper objectMapper = new ObjectMapper(); @RequestMapping(value = "/thing/{id}") public void getThing(@PathVariable final String id, HttpServletResponse response) { Thing thing = new Thing(); objectMapper.writeValueUsingView(response.getWriter(), thing, Views.ExtendPublic.class); }
Jackson> = 1.7을 사용하는 경우 @JSONFilter가 사용자의 요구에 더 잘 맞습니다.
-
==============================
2.@JsonView 주석은 Spring에서 지원되지 않았지만이 문제는 해결되었습니다! 팔로우
@JsonView 주석은 Spring에서 지원되지 않았지만이 문제는 해결되었습니다! 팔로우
이것은 SPR-7156입니다.
Spring 버전 4.1 이상에서 사용 가능
봄 감사합니다!
from https://stackoverflow.com/questions/5772304/using-jsonview-with-spring-mvc by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring-Boot : 여러 요청을 동시에 처리 (0) | 2019.01.15 |
---|---|
[SPRING] 서버 측에서 스프링 프레임 워크로 안드로이드에 Stomp 클라이언트 설정 (0) | 2019.01.15 |
[SPRING] Spring Boot - ResourceLoader를 사용하여 텍스트 파일 읽기 (0) | 2019.01.15 |
[SPRING] Spring welcome-file-list 올바른 매핑 (0) | 2019.01.15 |
[SPRING] Spring 3.1 + Hibernate 4.1 JPA, 엔티티 관리자 팩토리가 두 번 등록 됨 (0) | 2019.01.15 |