반응형
Jackson을 사용한 직렬화의 특정 필드 무시
Jackson 라이브러리를 사용하고 있습니다.
직렬화 / 역 직렬화 할 때 특정 필드를 무시하고 싶습니다. 예를 들면 다음과 같습니다.
public static class Foo {
public String foo = "a";
public String bar = "b";
@JsonIgnore
public String foobar = "c";
}
나에게 줄 것 :
{
foo: "a",
bar: "b",
}
그러나 나는 얻는다 :
{
foo: "a",
bar: "b",
foobar: "c"
}
이 코드로 개체를 직렬화하고 있습니다.
ObjectMapper mapper = new ObjectMapper();
String out = mapper.writeValueAsString(new Foo());
내 클래스의 실제 필드 유형은 Log4J Logger 클래스의 인스턴스입니다. 내가 도대체 뭘 잘못하고있는 겁니까?
좋아, 그래서 어떤 이유로 나는 이 대답을 놓쳤습니다 .
다음 코드는 예상대로 작동합니다.
@JsonIgnoreProperties({"foobar"})
public static class Foo {
public String foo = "a";
public String bar = "b";
public String foobar = "c";
}
//Test code
ObjectMapper mapper = new ObjectMapper();
Foo foo = new Foo();
foo.foobar = "foobar";
foo.foo = "Foo";
String out = mapper.writeValueAsString(foo);
Foo f = mapper.readValue(out, Foo.class);
또한 주목할 가치가있는 것은 DeserializationFeature를 사용하는이 솔루션입니다 : https://stackoverflow.com/a/18850479/1256179
에서 참조 나는 소스 코드에 대한 제어를 갖고 있지 않은 어떻게 내가 속성을 무시 잭슨을 알 수 있습니까?
Jackson Mixins를 사용할 수 있습니다. 예를 들면 :
class YourClass {
public int ignoreThis() { return 0; }
}
이 Mixin으로
abstract class MixIn {
@JsonIgnore abstract int ignoreThis(); // we don't need it!
}
이것으로 :
objectMapper.addMixIn(YourClass.class, MixIn.class);
ReferenceURL : https://stackoverflow.com/questions/8718349/ignore-specific-field-on-serialization-with-jackson
반응형
'program story' 카테고리의 다른 글
파이썬에서 HTML 문서 생성 (0) | 2020.12.25 |
---|---|
Android :“BadTokenException : 창을 추가 할 수 없습니다. (0) | 2020.12.25 |
일반 인코더로 객체 JSON을 직렬화 가능하게 만들기 (0) | 2020.12.25 |
별도의 하위 폴더에 이미지 / 글꼴을 출력하도록 웹팩 구성 (0) | 2020.12.25 |
컨트롤러에서 ModelState.isValid 수동 설정 (0) | 2020.12.24 |