1
0
mirror of https://github.com/json-iterator/go.git synced 2025-06-24 23:16:47 +02:00

add Api interface to allow save the frozen config

This commit is contained in:
Tao Wen
2017-06-19 13:43:22 +08:00
parent 7e9017caa2
commit 31afe6450e
3 changed files with 21 additions and 11 deletions

View File

@ -29,6 +29,16 @@ type frozenConfig struct {
iteratorPool chan *Iterator
}
type Api interface {
MarshalToString(v interface{}) (string, error)
Marshal(v interface{}) ([]byte, error)
UnmarshalFromString(str string, v interface{}) error
Unmarshal(data []byte, v interface{}) error
Get(data []byte, path ...interface{}) Any
NewEncoder(writer io.Writer) *AdaptedEncoder
NewDecoder(reader io.Reader) *AdaptedDecoder
}
var ConfigDefault = Config{
EscapeHtml: true,
}.Froze()
@ -151,15 +161,15 @@ func (cfg *frozenConfig) getEncoderFromCache(cacheKey reflect.Type) Encoder {
return cache[cacheKey]
}
// CleanDecoders cleans decoders registered or cached
func (cfg *frozenConfig) CleanDecoders() {
// cleanDecoders cleans decoders registered or cached
func (cfg *frozenConfig) cleanDecoders() {
typeDecoders = map[string]Decoder{}
fieldDecoders = map[string]Decoder{}
atomic.StorePointer(&cfg.decoderCache, unsafe.Pointer(&map[string]Decoder{}))
}
// CleanEncoders cleans encoders registered or cached
func (cfg *frozenConfig) CleanEncoders() {
// cleanEncoders cleans encoders registered or cached
func (cfg *frozenConfig) cleanEncoders() {
typeEncoders = map[string]Encoder{}
fieldEncoders = map[string]Encoder{}
atomic.StorePointer(&cfg.encoderCache, unsafe.Pointer(&map[string]Encoder{}))