It is the design of JSON! Which is a reflection of the same dynamic typing choice made in the original design of Javascript.
Tell me again why we somehow standardized on sending the equivalent of JSObject.toString() for everything? Especially when "standardized" isn't