5454 peSepBytes = []byte (peSeparator )
5555)
5656
57+ // readJSONIter reads a Value from a JSON iterator.
58+ // DO NOT EXPORT
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+ // writeJSONStream writes a value into a JSON stream.
69+ // DO NOT EXPORT
70+ // TODO: eliminate this https://github.com/kubernetes-sigs/structured-merge-diff/issues/202
71+ func writeJSONStream (v value.Value , stream * jsoniter.Stream ) {
72+ stream .WriteVal (v .Unstructured ())
73+ }
74+
5775// DeserializePathElement parses a serialized path element
5876func DeserializePathElement (s string ) (PathElement , error ) {
5977 b := []byte (s )
@@ -75,7 +93,7 @@ func DeserializePathElement(s string) (PathElement, error) {
7593 case peValueSepBytes [0 ]:
7694 iter := readPool .BorrowIterator (b )
7795 defer readPool .ReturnIterator (iter )
78- v , err := value . ReadJSONIter (iter )
96+ v , err := readJSONIter (iter )
7997 if err != nil {
8098 return PathElement {}, err
8199 }
@@ -86,7 +104,7 @@ func DeserializePathElement(s string) (PathElement, error) {
86104 fields := value.FieldList {}
87105
88106 iter .ReadObjectCB (func (iter * jsoniter.Iterator , key string ) bool {
89- v , err := value . ReadJSONIter (iter )
107+ v , err := readJSONIter (iter )
90108 if err != nil {
91109 iter .Error = err
92110 return false
@@ -141,14 +159,14 @@ func serializePathElementToWriter(w io.Writer, pe PathElement) error {
141159 stream .WriteMore ()
142160 }
143161 stream .WriteObjectField (field .Name )
144- value . WriteJSONStream (field .Value , stream )
162+ writeJSONStream (field .Value , stream )
145163 }
146164 stream .WriteObjectEnd ()
147165 case pe .Value != nil :
148166 if _ , err := stream .Write (peValueSepBytes ); err != nil {
149167 return err
150168 }
151- value . WriteJSONStream (* pe .Value , stream )
169+ writeJSONStream (* pe .Value , stream )
152170 case pe .Index != nil :
153171 if _ , err := stream .Write (peIndexSepBytes ); err != nil {
154172 return err
0 commit comments