현재 웹 응용 프로그램에서 JSON 객체를 생성 할 때 불변의 라이브러리를 사용하고 있습니다. 왜 불변의 null이 권장되지 않습니까?
가 this 장에 보면, 첫 번째 줄은 말한다 : 널 (NULL) 속성의사용은 권장하지 않습니다.
그래서 내 질문은 :
1) 그 이유는 무엇입니까? null 객체가 잘못 되었나요?
2) 항목이 때문에 실패합니다 클래스라는 빌더 코드를 사용하여, 널 (null)인지 아닌지 나는 thirdy 객체의 래퍼를 사용하고 있는데 나도 몰라 어떤 경우 :
MyImmutableWrapperObject
.builder().
.mobile(input.getMobile()) // don't know if null or not
.build();
어떤 최적 있는가 해결책?
편집 :
@JsonProperty("mobile")
public abstract Optional<String> mobile();
...
// composing builder
if (input.getMobile() != null)
builder.mobile(input.getMobile());
생성 된 JSON은 다음과 같습니다
"mobile": {
"present": false
},
어떻게 완전히 빈 필드를 제거 할 수 있습니까?
나는 this을 읽었지 만 gson.toJson을 사용하여 나의 객관적인 방법이 아닌 String 객체를 반환합니다.
는 POSTEDIT :
난 그냥도 존재하는 경우 옵션 실제 값을 표시하지 않습니다,하지만 그냥 참/거짓 값을 표시, 그래서 그것을 필요로하지 않는다는 것을 발견했다.
입니다 : 빌더
같은
은 참조를 위해 단순히 사실이 아니다 builder = ImmutableAccount \t \t \t \t .builder() if (input.getMobile()! = null) builder.mobile (input.getMobile()); builder.build() –@ FabrizioStellato 반환 할 수 있습니다 - 예. 이 경우에는'Optional.empty()'를 저장하는 것이 옳을 수도 있습니다. 또는 빌더가 대신이 null을 사용하여 작업을 수행 할 수도 있습니다. – Eugene
내 편집 된 질문보기 –