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

Method decode

document/json/decoder.go:48–76  ·  view source on GitHub ↗
(jv interface{}, rv reflect.Value, tag serde.Tag)

Source from the content-addressed store, hash-verified

46}
47
48func (d *Decoder) decode(jv interface{}, rv reflect.Value, tag serde.Tag) error {
49 if jv == nil {
50 rv := serde.Indirect(rv, true)
51 return d.decodeJSONNull(rv)
52 }
53
54 rv = serde.Indirect(rv, false)
55
56 if err := d.unsupportedType(jv, rv); err != nil {
57 return err
58 }
59
60 switch tv := jv.(type) {
61 case bool:
62 return d.decodeJSONBoolean(tv, rv)
63 case json.Number:
64 return d.decodeJSONNumber(tv, rv)
65 case float64:
66 return d.decodeJSONFloat64(tv, rv)
67 case string:
68 return d.decodeJSONString(tv, rv)
69 case []interface{}:
70 return d.decodeJSONArray(tv, rv)
71 case map[string]interface{}:
72 return d.decodeJSONObject(tv, rv)
73 default:
74 return fmt.Errorf("unsupported json type, %T", tv)
75 }
76}
77
78func (d *Decoder) decodeJSONNull(rv reflect.Value) error {
79 if rv.IsValid() && rv.CanSet() {

Callers 3

DecodeJSONInterfaceMethod · 0.95
decodeJSONArrayMethod · 0.95
decodeJSONObjectMethod · 0.95

Calls 10

decodeJSONNullMethod · 0.95
unsupportedTypeMethod · 0.95
decodeJSONBooleanMethod · 0.95
decodeJSONNumberMethod · 0.95
decodeJSONFloat64Method · 0.95
decodeJSONStringMethod · 0.95
decodeJSONArrayMethod · 0.95
decodeJSONObjectMethod · 0.95
IndirectFunction · 0.92
ErrorfMethod · 0.80

Tested by

no test coverage detected