사용자 도구

사이트 도구


java:jackson:jsonfilter

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
java:jackson:jsonfilter [2018/08/09 12:17]
kwon37xi [Jackson JsonFilter]
java:jackson:jsonfilter [2020/11/23 15:43] (현재)
kwon37xi
줄 1: 줄 1:
 ====== Jackson JsonFilter ====== ====== Jackson JsonFilter ======
-[[java:jackson|Java Jackson JSON Library]] @JsonFilter+  * [[java:jackson|Java Jackson JSON Library]] @JsonFilter
  
   * ''@JsonFilter'' : Filter ID를 문자열로 지정한다. 일단 이 애노테이션을 사용하면 무조건 ''FilterProvider''와 해당 ID를 처리하는 필터를 제공해야 한다.   * ''@JsonFilter'' : Filter ID를 문자열로 지정한다. 일단 이 애노테이션을 사용하면 무조건 ''FilterProvider''와 해당 ID를 처리하는 필터를 제공해야 한다.
 +  * [[java:jackson:mixin|Jackson Mixin]]과 조합하면 더 강력해진다.
   * ''SimpleFilterProvider''   * ''SimpleFilterProvider''
     * ''setDefaultFilter'' : Filter ID에 해당하는 필터가 존재하지 않을 경우 기본처리할 필터. 지정하지 않으면 오류 발생.     * ''setDefaultFilter'' : Filter ID에 해당하는 필터가 존재하지 않을 경우 기본처리할 필터. 지정하지 않으면 오류 발생.
-  * ''SimpleBeanPropertyFilter.filterOutAllExcept'' : 지정된 필드들만 JSON 변환한다. 알 수 없는 필드는 무시한다. 이 방식을 권장한다. 명백히 검증된 필드만 내보낸다.+  * **''SimpleBeanPropertyFilter.filterOutAllExcept''** : 지정된 필드들만 JSON 변환한다. 알 수 없는 필드는 무시한다. 이 방식을 권장한다. 명백히 검증된 필드만 내보낸다.
   * ''SimpleBeanPropertyFilter.serializeAllExcept'' : 지정된 필드를 제외한 나머지 모두를 JSON 변환한다. 알 수 없는 필드는 무시한다. 이 방식은 **추후에 추가되는 필드가 오류를 유발시키거나 보안상 위협이 될 수도 있기 때문에 권하고 싶지 않다**.   * ''SimpleBeanPropertyFilter.serializeAllExcept'' : 지정된 필드를 제외한 나머지 모두를 JSON 변환한다. 알 수 없는 필드는 무시한다. 이 방식은 **추후에 추가되는 필드가 오류를 유발시키거나 보안상 위협이 될 수도 있기 때문에 권하고 싶지 않다**.
   * ''objectMapper.writer(filterProvider)''   * ''objectMapper.writer(filterProvider)''
 +  * ''objectMapper.setFilterProvider(new SimpleFilterProvider().addFilter("filtername", new MyJsonFilter()));'' 형태로 전역 등록 가능.
   * [[java:lombok:fieldnameconstants|Lombok @FieldNameConstants]] 와 함께 사용하면 컴파일 오류가 줄어 들 것으로 보인다.   * [[java:lombok:fieldnameconstants|Lombok @FieldNameConstants]] 와 함께 사용하면 컴파일 오류가 줄어 들 것으로 보인다.
 ===== Nested Filter ===== ===== Nested Filter =====
줄 62: 줄 64:
   * [[https://github.com/Baeldung/spring-hypermedia-api/blob/master/src/main/java/com/baeldung/web/controller/NewBookController.java|spring-hypermedia-api/NewBookController.java at master · Baeldung/spring-hypermedia-api]]   * [[https://github.com/Baeldung/spring-hypermedia-api/blob/master/src/main/java/com/baeldung/web/controller/NewBookController.java|spring-hypermedia-api/NewBookController.java at master · Baeldung/spring-hypermedia-api]]
   * [[https://stackoverflow.com/questions/11036366/filter-nested-objects-using-jacksons-beanpropertyfilter|Filter nested objects using Jackson's BeanPropertyFilter - Stack Overflow]]   * [[https://stackoverflow.com/questions/11036366/filter-nested-objects-using-jacksons-beanpropertyfilter|Filter nested objects using Jackson's BeanPropertyFilter - Stack Overflow]]
- +  * [[https://xpam.pl/blog/?p=286|Receive only the data your client needs – full dynamic JSON filtering with Jackson | xpam.pl]] 
 +  * [[https://www.baeldung.com/jackson-serialize-field-custom-criteria|Serialize Only Fields that meet a Custom Criteria with Jackson | Baeldung]] 
 +  * [[https://jsonobject.tistory.com/258|mapper.setFilterProvider(new SimpleFilterProvider().addFilter("userJsonFilter", new UserJsonFilter()));]]
java/jackson/jsonfilter.1533784626.txt.gz · 마지막으로 수정됨: 2018/08/09 12:17 저자 kwon37xi