Fix: null jsonpath serialization

Signed-off-by: acejilam <acejilam@gmail.com>

Kubernetes-commit: 9646ae5a9efb0eee7ac15577d113699700233017
This commit is contained in:
acejilam 2023-08-10 19:32:47 +08:00 committed by Kubernetes Publisher
parent 9c6b659a97
commit a8fc969a34
2 changed files with 6 additions and 1 deletions

View File

@ -573,6 +573,9 @@ func (j *JSONPath) evalToText(v reflect.Value) ([]byte, error) {
if !ok {
return nil, fmt.Errorf("can't print type %s", v.Type())
}
if iface == nil {
return []byte("null"), nil
}
var buffer bytes.Buffer
fmt.Fprint(&buffer, iface)
return buffer.Bytes(), nil

View File

@ -301,7 +301,8 @@ func TestJSONInput(t *testing.T) {
{"id": "i3", "x": 8, "y": 3 },
{"id": "i4", "x": -6, "y": -1 },
{"id": "i5", "x": 0, "y": 2, "z": 1 },
{"id": "i6", "x": 1, "y": 4 }
{"id": "i6", "x": 1, "y": 4 },
{"id": "i7", "x": null, "y": 4 }
]`)
var pointsData interface{}
err := json.Unmarshal(pointsJSON, &pointsData)
@ -311,6 +312,7 @@ func TestJSONInput(t *testing.T) {
pointsTests := []jsonpathTest{
{"exists filter", "{[?(@.z)].id}", pointsData, "i2 i5", false},
{"bracket key", "{[0]['id']}", pointsData, "i1", false},
{"nil value", "{[-1]['x']}", pointsData, "null", false},
}
testJSONPath(pointsTests, false, t)
}