nit: One can use pointer values for marking JSON fields as optional, and thus distinguish between the 0 and nil case.
I felt similar to you initially about the difference between 0 and Null/None - I have to say that once I started modelling my APIs so that these two cases could be treated equivalently, I think the quality of my APIs improved.