MCPcopy Create free account
hub / github.com/aws/smithy-go / encodeMap

Method encodeMap

document/json/encoder.go:182–212  ·  view source on GitHub ↗
(vp valueProvider, rv reflect.Value)

Source from the content-addressed store, hash-verified

180}
181
182func (e *Encoder) encodeMap(vp valueProvider, rv reflect.Value) error {
183 object := vp.GetValue().Object()
184 defer object.Close()
185
186 rawKeys := rv.MapKeys()
187 keys := make([]*mapKey, 0, len(rawKeys))
188 for _, raw := range rawKeys {
189 keys = append(keys, &mapKey{
190 Value: raw,
191 Underlying: fmt.Sprint(raw.Interface()),
192 })
193 }
194
195 slices.SortFunc(keys, sortMapKeys)
196 for _, key := range keys {
197 if key.Underlying == "" {
198 return &document.InvalidMarshalError{Message: "map key cannot be empty"}
199 }
200
201 ev := rv.MapIndex(key.Value)
202 err := e.encode(jsonObjectKeyProvider{
203 Object: object,
204 Key: key.Underlying,
205 }, ev, serde.Tag{})
206 if err != nil {
207 return err
208 }
209 }
210
211 return nil
212}
213
214func (e *Encoder) encodeSlice(value valueProvider, rv reflect.Value) error {
215 array := value.GetValue().Array()

Callers 1

encodeMethod · 0.95

Calls 4

encodeMethod · 0.95
ObjectMethod · 0.80
GetValueMethod · 0.65
CloseMethod · 0.45

Tested by

no test coverage detected