JSON is not space efficient or particularly efficient to parse so there are more stability issues compared to other formats. Since it's a text-only format there is also no efficient way to include binary data which makes it problematic to allow file attachments or anything in notes
Discussion
nothing in nostr preventing not using json
the spec specifies json so that would have to be changed, breaking every client and relay in the process
i mean, you could make one of the binary JSON formats out there available on a separate port, for clients/servers that support that. at least some of those formats support binary blobs or typed arrays, and virtually all of them are strongly typed. it does lead to the question of what to do with these binary blobs once they need to be serialised as plain-text JSON. one possibility is to standardise on Base64 encoding.