The API surface should avoid being influenced by how the backend works. 
The Go stdlib json parser reflect the Go language and the way it deals with zero-values and that is perfectly fine. I think that "missing value => set it to the relevant zero-value for the type" is the proper mechanism for the Go-level backend, and at the same time "missing value => undefined" is the proper way of dealing with this at the Javascript level (had we been in Ruby, using `nil` would have been the idiomatic way).

So, in conclusion, I think we should test for `undefined` rather than `0` in the js code and omit the key if it is undefined when submitting the error and let Go infer the `0` as is proper in that environment.