File tree Expand file tree Collapse file tree 1 file changed +10
-2
lines changed
contributors/devel/sig-architecture Expand file tree Collapse file tree 1 file changed +10
-2
lines changed Original file line number Diff line number Diff line change @@ -871,13 +871,21 @@ have a built-in `nil` value.
871
871
872
872
The `+nullable` comment tag allows the json `null` value to be a valid value
873
873
for a field. The `null` value is serialized only when a field is a pointer
874
- in the Go definition, and does not have the `omitempty` json tag.
874
+ in the Go definition, and does not have the `omitempty` json tag, or sometimes where a
875
+ custom marshal function is implemented.
875
876
876
877
For example, a map field marked with `+nullable` would accept either `foo : null` or `foo: {}`.
877
878
878
879
Usage of `+nullable` is discouraged as it introduces several issues :
879
880
- It is not compatible with json merge patching.
880
- - It is not compatible with generic protobuf.
881
+ - From the [JSON Merge Patch RFC](https://tools.ietf.org/html/rfc7386#section-1):
882
+ > Null values in the merge patch are given special meaning to indicate the removal of existing values in the target.
883
+ - Explicit `null` values are not be persisted in proto serializations.
884
+ - ` null` values are not supported by Server-Side Apply applyconfiguration types.
885
+ - A persisted `null` value would not round-trip through the applyconfiguration type
886
+ encode/decode cycle.
887
+
888
+ Avoid designing APIs that require the distinction bewteen unset and `null`.
881
889
882
890
# # Defaulting
883
891
You can’t perform that action at this time.
0 commit comments