| ▲ | kccqzy an hour ago | |
Some languages have a culture of doing things correctly and conforming strictly to the spec. These languages have indeed sorted it out years ago. Haskell for example. Any language that doesn’t have a special number type for JSON is a half-assed implementation, because 1e1000 is a perfectly valid JSON number that is beyond the typical IEEE754 double precision floating point numbers; does your language handle that correctly? Haskell does. This is but a small example of a strong culture bias towards correctness. | ||
| ▲ | layer8 24 minutes ago | parent | next [-] | |
The spec (RFC 8259) leaves significant leeway to implementations: A JSON parser MAY accept non-JSON forms or extensions. An implementation may set limits on the size of texts that it accepts. An implementation may set limits on the maximum depth of nesting. An implementation may set limits on the range and precision of numbers. An implementation may set limits on the length and character contents of strings. Add to that things like duplicate keys being allowed by the spec. There’s a lot of implementation choices to decide on. And then things can get really complex with JSON Schema. | ||
| ▲ | ncruces 39 minutes ago | parent | prev [-] | |
Ironically Go has(d) json.Number which almost no one used, so it got dropped from v2: https://pkg.go.dev/encoding/json#Number You can still use it though, and I built my tiny decimal library around it: https://github.com/ncruces/decimal | ||