@@ -21,12 +21,18 @@ protected Builder builder() {
2121
2222 public static class Builder extends Config .Builder {
2323 private boolean excludeFieldsWithoutExposeAnnotation = false ;
24+ private boolean serializeNulls = false ;
2425
2526 public Builder excludeFieldsWithoutExposeAnnotation () {
2627 excludeFieldsWithoutExposeAnnotation = true ;
2728 return this ;
2829 }
2930
31+ public Builder serializeNulls () {
32+ serializeNulls = true ;
33+ return this ;
34+ }
35+
3036 public GsonCompatibilityMode build () {
3137 return (GsonCompatibilityMode ) super .build ();
3238 }
@@ -44,21 +50,28 @@ public boolean equals(Object o) {
4450
4551 Builder builder = (Builder ) o ;
4652
47- return excludeFieldsWithoutExposeAnnotation == builder .excludeFieldsWithoutExposeAnnotation ;
53+ if (excludeFieldsWithoutExposeAnnotation != builder .excludeFieldsWithoutExposeAnnotation ) return false ;
54+ return serializeNulls == builder .serializeNulls ;
4855 }
4956
5057 @ Override
5158 public int hashCode () {
5259 int result = super .hashCode ();
5360 result = 31 * result + (excludeFieldsWithoutExposeAnnotation ? 1 : 0 );
61+ result = 31 * result + (serializeNulls ? 1 : 0 );
5462 return result ;
5563 }
5664 }
5765
5866 @ Override
5967 public void updateClassDescriptor (ClassDescriptor desc ) {
60- super .updateClassDescriptor (desc );
6168 removeGetterAndSetter (desc );
69+ for (Binding binding : desc .allEncoderBindings ()) {
70+ if (builder ().serializeNulls ) {
71+ binding .shouldOmitNull = false ;
72+ }
73+ }
74+ super .updateClassDescriptor (desc );
6275 }
6376
6477 private void removeGetterAndSetter (ClassDescriptor desc ) {
0 commit comments