То получим невалидный json
{"example_map":{null:"val1","key2":"val2"}}
И при попытке его обратно заанмаршалить получим ошибку:
panic: parse error: expected string near offset 20 of 'example_map'
Это происходит из-за использовании функции RawText
func (w *Writer) RawText(data []byte, err error) {
switch {
case w.Error != nil:
return
case err != nil:
w.Error = err
case len(data) > 0:
w.String(string(data))
default:
w.RawString("null")
}
}
Предлагаю убрать возможность возвращения null для ключей мапы, т.к. это приводит к неочевидному поведению
В данный момент, если мы попытаемся замаршалить что-то такое, без кастомных маршаллеров
то получим
{"example_map":{"":"val1","key2":"val2"}}
Если в тип выше добавить кастомные маршаллеры
То получим невалидный json
{"example_map":{null:"val1","key2":"val2"}}
И при попытке его обратно заанмаршалить получим ошибку:panic: parse error: expected string near offset 20 of 'example_map'
Это происходит из-за использовании функции RawText
Предлагаю убрать возможность возвращения null для ключей мапы, т.к. это приводит к неочевидному поведению