In contrast, Go and its `json.Unmarshal()` aren't that well suited for parsing arbitrary and/or complex inputs. However, if the expected input is well formed and can be directly mapped to a predefined datastructure, the convenience factor is pretty high.
So, from my limited experience, I would say that JSON parsing in golang is more geared towards deserialising well defined transport formats than ingesting arbitrary inputs.
I think go revolves more around well-defined structures, and JSON is anything but. For inter-process pipelines, protobuf (polyglot) and gob (go-only) work better in my experience.
That said, as someone who spends a lot of time in Python as well, I can't express how much I love the deep autocompletion powers and dumb-mistake suppressing abilities of static typing.
Go type system is flat so it's often hard to express something without being tempted to "opt-out" from its rigid type system.
The question is, is Go type system a good compromise between simplicity and expressiveness ?
I guess language design is hard, because the competition (Nim,Rust,...) also have its share of issues.
This article seems to address a lot of the pain points I originally had: https://eager.io/blog/go-and-json/
curl -s https://api.github.com/repos/chimeracoder/gojson | gojson -name=Repository