One of these days I should write a "Falsehood programmers believe about JSON" piece...
The two major pain-points with JSON I see recurring and causing issues:<p>- You need to process the entire document before you can (de)serialize. It's not rare to see pathological cases of this resulting in 100~1000x resource requirements compared to a simpler line-based format like CSV/TSV/0xFFSV. Streaming JSON deserialization can only be achieved to limited extent by "JSONL" (concatenating documents on the root level instead of wrapping them in an array).<p>- Numbers are floating point. The only way to reliably represent decimal numbers is by wrapping them as strings.<p>- You can not rely on the consistency of a hash of the JSON-serialization as it's not well-defined and varies between implementations. You need to specify a well-defined strict subset of JSON with custom serialization if you want this (at this point, are you really reaping the benefits of JSON?). I've seen this one resulting in entire protocols/stacks being rewritten from the ground up due to inability to get required interop working.