On Mon, Feb 28, 2022 at 4:27 AM Tom Molesworth <tom@deriv.com> wrote: > On Mon, 28 Feb 2022 at 16:56, Dan Book <grinnz@gmail.com> wrote: > >> On Mon, Feb 28, 2022 at 3:27 AM Philippe Bruhat (BooK) <book@cpan.org> >> wrote: >> >>> When parsing `{ "a" : 2, "b": "c" }`, all that Perl reads is text. How >>> would a pure Perl JSON parser decode that `2` from the input source and >>> keep it in memory as if it was always the number 2? >>> >> >> That's not the case - JSON parsers are aware whether they are parsing a >> number or a string because the JSON grammar is distinct, and can create the >> scalar differently depending. Not like e.g. certain databases where you >> can't always tell the type of the response values. Cpanel::JSON::XS::Type >> uses this information to return a type schema which you can already use to >> round-trip the output - these sort of changes enable more opportunities. >> > > I think the point here is "how does pure perl say 'this string in $x was > always a number'". Extracting the number 2 from a string of JSON is easy > enough, presumably `substr` or regex were involved to get to that point - > but how do we then set the "this was originally a number" flag to make the > roundtrip work? Hopefully something in `builtin` or equivalent will provide > that, rather than requiring XS calls to internal APIs! > > I do believe that is the original topic of this thread... -DanThread Previous | Thread Next