Skip to content

Commit d23b92a

Browse files
committed
migrate github.com/json-iterator/go to sigs.k8s.io/json
1 parent cf09e71 commit d23b92a

File tree

6 files changed

+192
-205
lines changed

6 files changed

+192
-205
lines changed

fieldpath/serialize-pe.go

+22-49
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ import (
2323
"strconv"
2424
"strings"
2525

26-
jsoniter "github.com/json-iterator/go"
2726
"sigs.k8s.io/structured-merge-diff/v4/value"
2827
)
2928

@@ -73,29 +72,18 @@ func DeserializePathElement(s string) (PathElement, error) {
7372
FieldName: &str,
7473
}, nil
7574
case peValueSepBytes[0]:
76-
iter := readPool.BorrowIterator(b)
77-
defer readPool.ReturnIterator(iter)
78-
v, err := value.ReadJSONIter(iter)
75+
v, err := value.FromJSON(b)
7976
if err != nil {
8077
return PathElement{}, err
8178
}
8279
return PathElement{Value: &v}, nil
8380
case peKeySepBytes[0]:
84-
iter := readPool.BorrowIterator(b)
85-
defer readPool.ReturnIterator(iter)
86-
fields := value.FieldList{}
87-
88-
iter.ReadObjectCB(func(iter *jsoniter.Iterator, key string) bool {
89-
v, err := value.ReadJSONIter(iter)
90-
if err != nil {
91-
iter.Error = err
92-
return false
93-
}
94-
fields = append(fields, value.Field{Name: key, Value: v})
95-
return true
96-
})
81+
fields, err := value.FieldListFromJSON(b)
82+
if err != nil {
83+
return PathElement{}, err
84+
}
9785
fields.Sort()
98-
return PathElement{Key: &fields}, iter.Error
86+
return PathElement{Key: &fields}, nil
9987
case peIndexSepBytes[0]:
10088
i, err := strconv.Atoi(s[2:])
10189
if err != nil {
@@ -109,11 +97,6 @@ func DeserializePathElement(s string) (PathElement, error) {
10997
}
11098
}
11199

112-
var (
113-
readPool = jsoniter.NewIterator(jsoniter.ConfigCompatibleWithStandardLibrary).Pool()
114-
writePool = jsoniter.NewStream(jsoniter.ConfigCompatibleWithStandardLibrary, nil, 1024).Pool()
115-
)
116-
117100
// SerializePathElement serializes a path element
118101
func SerializePathElement(pe PathElement) (string, error) {
119102
buf := strings.Builder{}
@@ -122,47 +105,37 @@ func SerializePathElement(pe PathElement) (string, error) {
122105
}
123106

124107
func serializePathElementToWriter(w io.Writer, pe PathElement) error {
125-
stream := writePool.BorrowStream(w)
126-
defer writePool.ReturnStream(stream)
127108
switch {
128109
case pe.FieldName != nil:
129-
if _, err := stream.Write(peFieldSepBytes); err != nil {
110+
if _, err := w.Write(peFieldSepBytes); err != nil {
130111
return err
131112
}
132-
stream.WriteRaw(*pe.FieldName)
113+
fmt.Fprintf(w, "%s", *pe.FieldName)
133114
case pe.Key != nil:
134-
if _, err := stream.Write(peKeySepBytes); err != nil {
115+
if _, err := w.Write(peKeySepBytes); err != nil {
135116
return err
136117
}
137-
stream.WriteObjectStart()
138-
139-
for i, field := range *pe.Key {
140-
if i > 0 {
141-
stream.WriteMore()
142-
}
143-
stream.WriteObjectField(field.Name)
144-
value.WriteJSONStream(field.Value, stream)
118+
jsonVal, err := value.FieldListToJSON(*pe.Key)
119+
if err != nil {
120+
return err
145121
}
146-
stream.WriteObjectEnd()
122+
fmt.Fprintf(w, "%s", jsonVal)
147123
case pe.Value != nil:
148-
if _, err := stream.Write(peValueSepBytes); err != nil {
124+
if _, err := w.Write(peValueSepBytes); err != nil {
125+
return err
126+
}
127+
jsonVal, err := value.ToJSON(*pe.Value)
128+
if err != nil {
149129
return err
150130
}
151-
value.WriteJSONStream(*pe.Value, stream)
131+
fmt.Fprintf(w, "%s", jsonVal)
152132
case pe.Index != nil:
153-
if _, err := stream.Write(peIndexSepBytes); err != nil {
133+
if _, err := w.Write(peIndexSepBytes); err != nil {
154134
return err
155135
}
156-
stream.WriteInt(*pe.Index)
136+
fmt.Fprintf(w, "%d", *pe.Index)
157137
default:
158138
return errors.New("invalid PathElement")
159139
}
160-
b := stream.Buffer()
161-
err := stream.Flush()
162-
// Help jsoniter manage its buffers--without this, the next
163-
// use of the stream is likely to require an allocation. Look
164-
// at the jsoniter stream code to understand why. They were probably
165-
// optimizing for folks using the buffer directly.
166-
stream.SetBuffer(b[:0])
167-
return err
140+
return nil
168141
}

0 commit comments

Comments
 (0)