You can look at some Nostr library code and open source apps to see how’s it done today.
Certainly could be more strict. But it leverages existing JSON programming language libraries, which likely have already mostly standardise.
The signature is only signing the event id, not the serialised event. But again, I’m yet to see any issues in the wild.