[SPRING] Jackson은 비어있는 목록으로 비 직렬화 ""합니다.
SPRINGJackson은 비어있는 목록으로 비 직렬화 ""합니다.
빈 목록을 [] 대신 ""으로 표시하는 JSON 문자열이 있습니다. 예를 들어, 자식이없는 객체가있는 경우 다음과 같은 문자열이 표시됩니다.
{"id":13, "children":""}
부모 클래스에 deserialize하고 싶습니다. 아이들은 빈 아이들리스트에 제대로 설정되어 있습니다.
public class Parent {
private Long id;
private List<Child> children;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public List<Child> getChildren() {
return children;
}
public void setChildren(List<Child> children) {
this.children = children;
}
}
위의 JSON 문자열의 경우 id를 13으로 설정하고 자식을 새 ArrayList
Parent
id <- 13
children <- new ArrayList<Child>()
전체 클래스에 대해 특수 효과를 사용하는 방법을 알고 싶습니다.
@JsonDeserialize(using = ParentDeserializer.class)
public class Parent {
...
}
그리고
public class ParentDeserializer extends JsonDeserializer<Parent> {
public Parent deserialize(JsonParser parser, DeserializationContext context) {
...
}
}
그러나 목록에서 제대로 인스턴스화하는 일반적인 문제를 해결하고 싶습니다.
public class Parent {
...
// Can I get something like this?
@JsonDeserialize(using = EmptyArrayDeserializer<Child>.class)
public void setChildren(List<Child> children) {
this.children = children;
}
}
나는 그런 것을 얻을 수 있습니까?
해결법
-
==============================
1.몇 가지 옵션; 먼저,`ACCEPT_EMPTY_STRING_AS_NULL_OBJECT '를 유효하게하고 싶다 :
몇 가지 옵션; 먼저,`ACCEPT_EMPTY_STRING_AS_NULL_OBJECT '를 유효하게하고 싶다 :
mapper.enable(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT);
빈 문자열은 null이됩니다. 그리고 만약 당신이 그것을 실제 빈리스트로 바꾸고 싶다면, setter를 재정의하십시오 :
public void setChildren(List<Child> c) { if (c == null) { children = Collections.emptyList(); } else { chidlren = c; } }
from https://stackoverflow.com/questions/12933394/jackson-deserialize-as-an-empty-list by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] spring4 @RestController를 사용하여 jsp 페이지를 반환하는 방법? (0) | 2019.01.22 |
---|---|
[SPRING] Spring Security OAuth 2.0 - 인증 코드 부여에는 항상 클라이언트 비밀이 필요합니다. (0) | 2019.01.22 |
[SPRING] Spring Security 플러그인으로 기존 도메인 클래스 사용 (0) | 2019.01.22 |
[SPRING] BindingResult가 @Valid를 따라야하는 이유는 무엇입니까? (0) | 2019.01.22 |
[SPRING] 다중 모듈 프로젝트에서 Spring 부트 구성 요소 스캔 문제 (0) | 2019.01.22 |