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

Method encodeScalar

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

Source from the content-addressed store, hash-verified

226}
227
228func (e *Encoder) encodeScalar(vp valueProvider, rv reflect.Value) error {
229 if rv.Type() == serde.ReflectTypeOf.DocumentNumber {
230 number := rv.Interface().(document.Number)
231 if !isValidJSONNumber(number.String()) {
232 return &document.InvalidMarshalError{Message: fmt.Sprintf("invalid number literal: %s", number)}
233 }
234 vp.GetValue().Write([]byte(number))
235 return nil
236 }
237
238 switch rv.Kind() {
239 case reflect.Bool:
240 vp.GetValue().Boolean(rv.Bool())
241 case reflect.String:
242 vp.GetValue().String(rv.String())
243 default:
244 // Fallback to encoding numbers, will return invalid type if not supported
245 err := e.encodeNumber(vp, rv)
246 if err != nil {
247 return err
248 }
249 }
250
251 return nil
252}
253
254func (e *Encoder) encodeNumber(vp valueProvider, rv reflect.Value) error {
255 switch rv.Kind() {

Callers 1

encodeMethod · 0.95

Calls 7

encodeNumberMethod · 0.95
isValidJSONNumberFunction · 0.85
TypeMethod · 0.80
StringMethod · 0.65
WriteMethod · 0.65
GetValueMethod · 0.65
BooleanMethod · 0.45

Tested by

no test coverage detected