54
54
peSepBytes = []byte (peSeparator )
55
55
)
56
56
57
+ // DO NOT EXPORT
58
+ // readJSONIter reads a Value from a JSON iterator.
59
+ // TODO: eliminate this https://github.com/kubernetes-sigs/structured-merge-diff/issues/202
60
+ func readJSONIter (iter * jsoniter.Iterator ) (value.Value , error ) {
61
+ v := iter .Read ()
62
+ if iter .Error != nil && iter .Error != io .EOF {
63
+ return nil , iter .Error
64
+ }
65
+ return value .NewValueInterface (v ), nil
66
+ }
67
+
68
+ // DO NOT EXPORT
69
+
70
+ // writeJSONStream writes a value into a JSON stream.
71
+ // TODO: eliminate this https://github.com/kubernetes-sigs/structured-merge-diff/issues/202
72
+ func writeJSONStream (v value.Value , stream * jsoniter.Stream ) {
73
+ stream .WriteVal (v .Unstructured ())
74
+ }
75
+
57
76
// DeserializePathElement parses a serialized path element
58
77
func DeserializePathElement (s string ) (PathElement , error ) {
59
78
b := []byte (s )
@@ -75,7 +94,7 @@ func DeserializePathElement(s string) (PathElement, error) {
75
94
case peValueSepBytes [0 ]:
76
95
iter := readPool .BorrowIterator (b )
77
96
defer readPool .ReturnIterator (iter )
78
- v , err := value . ReadJSONIter (iter )
97
+ v , err := readJSONIter (iter )
79
98
if err != nil {
80
99
return PathElement {}, err
81
100
}
@@ -86,7 +105,7 @@ func DeserializePathElement(s string) (PathElement, error) {
86
105
fields := value.FieldList {}
87
106
88
107
iter .ReadObjectCB (func (iter * jsoniter.Iterator , key string ) bool {
89
- v , err := value . ReadJSONIter (iter )
108
+ v , err := readJSONIter (iter )
90
109
if err != nil {
91
110
iter .Error = err
92
111
return false
@@ -141,14 +160,14 @@ func serializePathElementToWriter(w io.Writer, pe PathElement) error {
141
160
stream .WriteMore ()
142
161
}
143
162
stream .WriteObjectField (field .Name )
144
- value . WriteJSONStream (field .Value , stream )
163
+ writeJSONStream (field .Value , stream )
145
164
}
146
165
stream .WriteObjectEnd ()
147
166
case pe .Value != nil :
148
167
if _ , err := stream .Write (peValueSepBytes ); err != nil {
149
168
return err
150
169
}
151
- value . WriteJSONStream (* pe .Value , stream )
170
+ writeJSONStream (* pe .Value , stream )
152
171
case pe .Index != nil :
153
172
if _ , err := stream .Write (peIndexSepBytes ); err != nil {
154
173
return err
0 commit comments