This release adds a few additional features:
-
Support encoding and decoding json.Number, making interoperability with JSON when using json.Encoder.UseNumber() easier.
-
Support time.Duration string format; an integer will be interpreted as nanoseconds (like before), but a string like "5h" will be parsed. On encoding the string format is used.
-
The omitempty struct tag now also works for structs with all zero values, for example an empty time.Time. A struct is considered "empty" when all fields (exported and private) are the zero value.
-
Allow using interface{} (or any) as the map key when decoding.
And some fixes:
-
Fix encoding.TextUnmarshaler not working for map values.
-
Make encoding.TextUnmarshaler and toml.Unmarshaler work if MarshalText() or MarshalTOML() have a pointer receiver.
-
Error out on nil returns from MarshalTOML/MarshalText; before they would get encoded as invalid TOML (keyname =).
-
Fix a panic where it would try to encode array = [{}, 0] as:
[[array]] [[array]]
Which isn't valid as 0 isn't a table.
-
Some better error reporting for some errors.