@@ -17,15 +17,12 @@ limitations under the License.
17
17
package fieldpath
18
18
19
19
import (
20
- "bytes"
21
20
"errors"
22
21
"fmt"
23
- "io"
24
22
"strconv"
25
23
"strings"
26
24
27
25
"github.com/go-json-experiment/json"
28
- "github.com/go-json-experiment/json/jsontext"
29
26
"sigs.k8s.io/structured-merge-diff/v6/value"
30
27
)
31
28
55
52
peKeySepBytes = []byte {peKey , peSeparator }
56
53
)
57
54
58
- // FieldListFromJSON is a helper function for reading a JSON document.
59
- func fieldListFromJSON (input []byte ) (value.FieldList , error ) {
60
- parser := jsontext .NewDecoder (bytes .NewBuffer (input ))
61
-
62
- if objStart , err := parser .ReadToken (); err != nil {
63
- return nil , fmt .Errorf ("parsing JSON: %v" , err )
64
- } else if objStart .Kind () != jsontext .BeginObject .Kind () {
65
- return nil , fmt .Errorf ("expected object" )
66
- }
67
-
68
- var fields value.FieldList
69
- for {
70
- if parser .PeekKind () == jsontext .EndObject .Kind () {
71
- if _ , err := parser .ReadToken (); err != nil {
72
- return nil , fmt .Errorf ("parsing JSON: %v" , err )
73
- }
74
- break
75
- }
76
-
77
- rawKey , err := parser .ReadToken ()
78
- if err == io .EOF {
79
- return nil , fmt .Errorf ("unexpected EOF" )
80
- } else if err != nil {
81
- return nil , fmt .Errorf ("parsing JSON: %v" , err )
82
- }
83
-
84
- k := rawKey .String ()
85
-
86
- var v any
87
- if err := json .UnmarshalDecode (parser , & v ); err == io .EOF {
88
- return nil , fmt .Errorf ("unexpected EOF" )
89
- } else if err != nil {
90
- return nil , fmt .Errorf ("parsing JSON: %v" , err )
91
- }
92
-
93
- fields = append (fields , value.Field {Name : k , Value : value .NewValueInterface (v )})
94
- }
95
-
96
- return fields , nil
97
- }
98
-
99
55
// DeserializePathElement parses a serialized path element
100
56
func DeserializePathElement (s string ) (PathElement , error ) {
101
57
b := []byte (s )
@@ -121,11 +77,10 @@ func DeserializePathElement(s string) (PathElement, error) {
121
77
}
122
78
return PathElement {Value : & v }, nil
123
79
case peKeySepBytes [0 ]:
124
- fields , err := fieldListFromJSON ( b )
125
- if err != nil {
80
+ var fields value. FieldList
81
+ if err := json . Unmarshal ( b , & fields ); err != nil {
126
82
return PathElement {}, err
127
83
}
128
- fields .Sort ()
129
84
return PathElement {Key : & fields }, nil
130
85
case peIndexSepBytes [0 ]:
131
86
i , err := strconv .Atoi (s [2 :])
0 commit comments