package trie

import (
	"encoding/json"
	"maps"
)

func (r *Root) MarshalJSON() ([]byte, error) {
	return json.Marshal(maps.Collect(r.Walk))
}

func (r *Root) UnmarshalJSON(data []byte) error {
	var m map[string]any
	if err := json.Unmarshal(data, &m); err != nil {
		return err
	}
	for k, v := range m {
		r.Store(NewKey(k), v)
	}
	return nil
}