[java] Jackson에서 fail_on_empty_beans를 어떻게 비활성화합니까?

jackson 2.1을 사용 fail_on_empty beans하여 오류 메시지가 비활성화하려는 것처럼 보이는 것을 어떻게 비활성화합니까?

나는 이것이 세상에서 가장 단순한 것이라고 가정하고 있지만 지옥이 늦었고 간단한 튜토리얼이나 .NET에서 특히 분명한 것을 찾을 수 없었습니다 api. SerializationFactory? 왜 그렇게 직관적이지 않게 만들고 오류 메시지를 그렇게 간단하게 보이게 만들까요?

내가 비록 오류 메시지처럼, 내 말은, 그것은 NPE보다 낫다.

나는 주석을 사용하여 이것을 할 수있는 방법이 있다고 가정하고있다. 그러나 나는 내가하고있는 단순한 작업을 위해 그것들을 전혀 사용하고 싶지 않다!



답변

클래스별로 또는 전 세계적으로 이것을 할 수 있다고 믿습니다.

클래스마다 클래스 선언 위의 @JsonSerialize를 시도하십시오.

매퍼의 경우 한 가지 예가 있습니다.

ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
// do various things, perhaps:
String someJsonString = mapper.writeValueAsString(someClassInstance);
SomeClass someClassInstance = mapper.readValue(someJsonString, SomeClass.class)

아래의 StackOverflow 링크에는 Spring 프로젝트에 대한 예제도 있습니다.

Jersey를 사용한 REST의 경우 머리에서 처음부터 기억하지 못하지만 비슷하다고 생각합니다.


내가 파낸 링크 몇 개 : (코드 하우스 종료로 인해 첫 번째 링크 편집).


답변

Spring Boot를 사용하는 경우 application.properties 파일에서 다음 속성을 설정할 수 있습니다. spring.jackson.serialization.FAIL_ON_EMPTY_BEANS = false


답변

클래스에 공용 메서드 / 속성이 포함되어 있지 않은 경우에도 동일한 문제가 발생할 수 있습니다. 나는 일반적으로 API 요청 및 응답을위한 전용 DTO를 가지고 있으며 공개로 선언했지만 한 경우에는 메소드도 공개로 설정하는 것을 잊었습니다. 이로 인해 처음에는 “빈”빈이 발생했습니다.


답변

클래스에 @JsonIgnoreProperties(ignoreUnknown=true)정의되지 않은 필드를 무시하도록 클래스에 주석을 달 수도 있습니다.


답변

추가 필드없이 JSON 개체를 얻으려면이 주석을 클래스에 추가하십시오. 저에게 완벽하게 작동했습니다.

@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})

이 행에 application.properties 파일을 추가 할 수도 있지만 JSON에 추가 필드가 추가됩니다.

spring.jackson.serialization.FAIL_ON_EMPTY_BEANS=false


답변

org.codehaus.jackson.map.ObjectMapper를 사용하는 경우 pls. 다음 줄을 사용하십시오

mapper.configure(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS, false);


답변

Jersey Rest Services에서는 JacksonFeatures 주석을 사용하십시오.

@JacksonFeatures(serializationDisable = {SerializationFeature.FAIL_ON_EMPTY_BEANS})
public Response getSomething() {
    Object entity = doSomething();
    return Response.ok(entity).build();
}