1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
// Copyright 2019-present Facebook Inc. All rights reserved.
// This source code is licensed under the Apache 2.0 license found
// in the LICENSE file in the root directory of this source tree.
package graphson
import jsoniter "github.com/json-iterator/go"
// DecoratorOfStructField decorates a struct field value encoder.
func (encodeExtension) DecoratorOfStructField(enc jsoniter.ValEncoder, tag string) jsoniter.ValEncoder {
typ, _ := parseTag(tag)
if typ == "" {
return nil
}
encoder, ok := enc.(typeEncoder)
if !ok {
encoder = typeEncoder{ValEncoder: enc}
}
encoder.Type = Type(typ)
return encoder
}
// DecoratorOfStructField decorates a struct field value decoder.
func (decodeExtension) DecoratorOfStructField(dec jsoniter.ValDecoder, tag string) jsoniter.ValDecoder {
typ, _ := parseTag(tag)
if typ == "" {
return nil
}
decoder, ok := dec.(typeDecoder)
if !ok {
decoder = typeDecoder{ValDecoder: dec}
}
decoder.typeChecker = Type(typ)
return decoder
}
|