Managing Json in Go is not a trivial problem. There are many examples out there of how to decode a simple json document into a struct, but few that answer the questions that inevitably come up: How do I provide defaults for fields? How do I make a field optional? How do I avoid using defaults for certain fields (eg: a user id)? How do I prevent pointer maintenance issues down the road?