1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- package builtin
- import (
- "encoding/json"
- "strings"
- )
- type JsonEncoder struct {
-
- }
- func (je *JsonEncoder) Encode(subject string, v interface{}) ([]byte, error) {
- b, err := json.Marshal(v)
- if err != nil {
- return nil, err
- }
- return b, nil
- }
- func (je *JsonEncoder) Decode(subject string, data []byte, vPtr interface{}) (err error) {
- switch arg := vPtr.(type) {
- case *string:
-
-
-
- str := string(data)
- if strings.HasPrefix(str, `"`) && strings.HasSuffix(str, `"`) {
- *arg = str[1 : len(str)-1]
- } else {
- *arg = str
- }
- case *[]byte:
- *arg = data
- default:
- err = json.Unmarshal(data, arg)
- }
- return
- }
|