GoDoxy/internal/utils/trie/json.go
2025-04-24 05:56:03 +08:00

26 lines
447 B
Go

package trie
import (
"maps"
"github.com/bytedance/sonic"
)
var sonicConfig = sonic.Config{
EncodeNullForInfOrNan: true,
}.Froze()
func (r *Root) MarshalJSON() ([]byte, error) {
return sonicConfig.Marshal(maps.Collect(r.Walk))
}
func (r *Root) UnmarshalJSON(data []byte) error {
var m map[string]any
if err := sonicConfig.Unmarshal(data, &m); err != nil {
return err
}
for k, v := range m {
r.Store(NewKey(k), v)
}
return nil
}