objectMapper에서 injectableValues를 "설정 해제"하는 방법은 무엇입니까?

jscherman

json을 deserealize하기 위해 injectableValues를 사용하고 있습니다. 나는 이것을 다음과 같이하고있다.

    final InjectableValues.Std injectableValues = new InjectableValues.Std();
    injectableValues.addValue(HttpRestResponse.class, response);
    emailsResponse = this.prepareCustomMapper().reader(EmailsResponse.class).withInjectableValues(injectableValues)
        .readValue(response.getBody());

protected ObjectMapper prepareCustomMapper() {
    if (this.mapper == null) {
        this.mapper = new ObjectMapper();
        this.mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        this.mapper.setSerializationInclusion(Inclusion.NON_NULL);
    }
    return this.mapper;
}

그래서 이것은 잘 작동합니다. 내 문제는 값을 주입하고 싶지 않을 때 다음과 같이 수행한다는 것입니다.

EmailResponse emailResponse = this.prepareCustomMapper().readValue(response.getBody(), EmailResponse.class);

이번에는이 예외가 발생합니다.

java.lang.IllegalStateException: No 'injectableValues' configured, can not inject value with id [com.despegar.cross.commons.utils.restutils.HttpRestResponse]
    at org.codehaus.jackson.map.deser.StdDeserializationContext.findInjectableValue(StdDeserializationContext.java:101)
    at org.codehaus.jackson.map.deser.impl.PropertyValueBuffer.inject(PropertyValueBuffer.java:54)
    at org.codehaus.jackson.map.deser.impl.PropertyBasedCreator.startBuilding(PropertyBasedCreator.java:111)
    at org.codehaus.jackson.map.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:892)
    at org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromObjectUsingNonDefault(BeanDeserializer.java:739)

이것은 내 EmailResponse.class 생성자입니다.

// I use this one if i want to inject HttpRestResponseObject 
public EmailResponse(@JacksonInject final HttpRestResponse request) {
    super();
    this.request = request
}

public EmailResponse() {
    super();
}

그래서 내 결론은 내가 첫 번째 objectMapper의 mapping에서 설정 한 주입 가능한 값이 두 번째 objectMapper의 매핑에서 유지되며, 값을받지 않는 생성자에 값을 주입하려고한다는 것입니다. 나는 이것을 prepareCustomMapper ()에 넣어 보았습니다. 그래서 이런 식으로 호출 될 때마다 injectedValues를 "정리"할 것이라고 생각했습니다.

this.mapper.setInjectableValues(null);

그러나 이것은 둘 다 작동하지 않았습니다.

injectableValues를 "설정 해제"하는 방법을 알고 있습니까? 또는 미래에 지속되지 않을 현재 매핑에 대한 injectableValues를 전달하는 방법. 지금부터 감사합니다!

일리아 오베 노프

'null'값을 삽입 할 수 있습니다.

final InjectableValues.Std injectableValues = new InjectableValues.Std();
    injectableValues.addValue(HttpRestResponse.class, null);
    emailsResponse = this.prepareCustomMapper().reader(EmailsResponse.class).withInjectableValues(injectableValues)
        .readValue(response.getBody());

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Ubuntu 14.04에서 터미널에서 프록시를 설정 해제하는 방법은 무엇입니까?

분류에서Dev

객체를 설정 해제하고 mysqli에서 삭제하는 방법은 무엇입니까?

분류에서Dev

이 배열에서 요소를 설정 해제하는 방법은 무엇입니까?

분류에서Dev

django-rest-framework의 modelviewset에서 csrf를 설정 해제하는 방법은 무엇입니까?

분류에서Dev

모든 버퍼에 상대 번호를 설정하고 설정 해제하는 방법은 무엇입니까?

분류에서Dev

전역 변수를 설정 해제하는 방법은 무엇입니까?

분류에서Dev

WooCommerce 장바구니에서 청구 필드를 설정 해제하는 방법

분류에서Dev

Linux에서 ">"에코를 설정 해제하는 방법

분류에서Dev

recyclerview에서 OnitemClickListener를 설정 해제하는 방법

분류에서Dev

셸에서 vim 모드를 설정 해제하는 방법

분류에서Dev

PHP에서 여러 키를 설정 해제하는 방법

분류에서Dev

비활성 시간 후 해당 상태가 '꺼짐'으로 간주 될 때 redis bitset에서 비트를 설정 해제하는 방법은 무엇입니까?

분류에서Dev

Linux에서 NIC의 네트워크 네임 스페이스를 설정 해제하는 방법은 무엇입니까?

분류에서Dev

Windows 명령 프롬프트에서 프록시를 영구적으로 설정 해제하는 방법은 무엇입니까?

분류에서Dev

nano : .nanorc에서 옵션을 설정 해제하는 방법은 무엇입니까?

분류에서Dev

PHP를 사용하여 빈 값을 가진 배열을 설정 해제하는 방법은 무엇입니까?

분류에서Dev

위치 매개 변수를 설정 해제하는 방법은 무엇입니까?

분류에서Dev

isset 내에서 PHP에서 전역 변수를 설정 해제하는 방법

분류에서Dev

Bash에서 선언으로 변수 세트를 설정 해제하는 방법

분류에서Dev

CakePHP 3.4에서 요청 데이터를 설정 해제하는 방법

분류에서Dev

Mongoid에서 관계를 설정 해제하려면 어떻게합니까?

분류에서Dev

PHP에서 세션 배열을 설정 해제하는 방법

분류에서Dev

검색 결과 페이지에서 제목 ( '검색 결과')을 설정 해제하는 방법은 무엇입니까?

분류에서Dev

기본 git ID를 설정 해제하는 방법

분류에서Dev

기본 자식 ID를 설정 해제하는 방법

분류에서Dev

기본 git ID를 설정 해제하는 방법

분류에서Dev

aureport에서 사용자 "설정 해제"는 누구입니까?

분류에서Dev

JointJS는 해당 포트에서 링크가 제거 될 때 수동 포트를 설정 해제하는 방법

분류에서Dev

단일 항목에 대해 ListView 버튼의 onClickListener를 설정 해제하는 방법-Android

Related 관련 기사

  1. 1

    Ubuntu 14.04에서 터미널에서 프록시를 설정 해제하는 방법은 무엇입니까?

  2. 2

    객체를 설정 해제하고 mysqli에서 삭제하는 방법은 무엇입니까?

  3. 3

    이 배열에서 요소를 설정 해제하는 방법은 무엇입니까?

  4. 4

    django-rest-framework의 modelviewset에서 csrf를 설정 해제하는 방법은 무엇입니까?

  5. 5

    모든 버퍼에 상대 번호를 설정하고 설정 해제하는 방법은 무엇입니까?

  6. 6

    전역 변수를 설정 해제하는 방법은 무엇입니까?

  7. 7

    WooCommerce 장바구니에서 청구 필드를 설정 해제하는 방법

  8. 8

    Linux에서 ">"에코를 설정 해제하는 방법

  9. 9

    recyclerview에서 OnitemClickListener를 설정 해제하는 방법

  10. 10

    셸에서 vim 모드를 설정 해제하는 방법

  11. 11

    PHP에서 여러 키를 설정 해제하는 방법

  12. 12

    비활성 시간 후 해당 상태가 '꺼짐'으로 간주 될 때 redis bitset에서 비트를 설정 해제하는 방법은 무엇입니까?

  13. 13

    Linux에서 NIC의 네트워크 네임 스페이스를 설정 해제하는 방법은 무엇입니까?

  14. 14

    Windows 명령 프롬프트에서 프록시를 영구적으로 설정 해제하는 방법은 무엇입니까?

  15. 15

    nano : .nanorc에서 옵션을 설정 해제하는 방법은 무엇입니까?

  16. 16

    PHP를 사용하여 빈 값을 가진 배열을 설정 해제하는 방법은 무엇입니까?

  17. 17

    위치 매개 변수를 설정 해제하는 방법은 무엇입니까?

  18. 18

    isset 내에서 PHP에서 전역 변수를 설정 해제하는 방법

  19. 19

    Bash에서 선언으로 변수 세트를 설정 해제하는 방법

  20. 20

    CakePHP 3.4에서 요청 데이터를 설정 해제하는 방법

  21. 21

    Mongoid에서 관계를 설정 해제하려면 어떻게합니까?

  22. 22

    PHP에서 세션 배열을 설정 해제하는 방법

  23. 23

    검색 결과 페이지에서 제목 ( '검색 결과')을 설정 해제하는 방법은 무엇입니까?

  24. 24

    기본 git ID를 설정 해제하는 방법

  25. 25

    기본 자식 ID를 설정 해제하는 방법

  26. 26

    기본 git ID를 설정 해제하는 방법

  27. 27

    aureport에서 사용자 "설정 해제"는 누구입니까?

  28. 28

    JointJS는 해당 포트에서 링크가 제거 될 때 수동 포트를 설정 해제하는 방법

  29. 29

    단일 항목에 대해 ListView 버튼의 onClickListener를 설정 해제하는 방법-Android

뜨겁다태그

보관