この記事はGo Advent Calendar 2021 4の19日目の記事です1。 goのencoding/jsonの機能はそこまで柔軟ではない。どこかで諦めたほうが良い事が多い2。 とはいえ、いろいろなことを柔軟にやってみる方法を検討してみるのは良いことなので検討してみる。 interfaceを含んだstructはdecodeできない interfaceを含んだstructはencodeはできるがdecodeができない。 例えば、以下のようなstructを考えてみる。Stringerの方は String() string を持つことを期待するinterface。 type S struct { Name string Stringer fmt.Stringer } type F struct{ Name string } func (f *F) String() string { re