Remix.run Logo
ncruces 2 days ago

Go can decode numbers losslessly as strings: https://pkg.go.dev/encoding/json#Number

json.Number is (almost) my “favorite” arbitrary decimal: https://github.com/ncruces/decimal?tab=readme-ov-file#decima...

I'm half joking, but I'm not sure why S-expressions would be better here. There are LISPs that don't do arbitrary precision math.

eadmund a day ago | parent | next [-]

> Go can decode numbers losslessly as strings: https://pkg.go.dev/encoding/json#Number

Yup, and if you’re using JSON in Go you really do need to be using Number exclusively. Anything else will lead to pain.

> I'm half joking, but I'm not sure why S-expressions would be better here. There are LISPs that don't do arbitrary precision math.

Sure, but I’m referring specifically to https://www.ietf.org/archive/id/draft-rivest-sexp-13.html, which only has lists and bytes, and so number are always just strings and it’s up to the program to interpret them.

mise_en_place 2 days ago | parent | prev [-]

For actual SERDES, JSON becomes very brittle. It's better to use something like protobuf or cap'n'proto for such cases.