On 2024-09-30 at 11:44:50 -0400, Grant Edwards via Python-list <python-list@python.org> wrote:
> On 2024-09-30, Left Right via Python-list <python-list@python.org> wrote: > > Whether and to what degree you can stream JSON depends on JSON > > structure. In general, however, JSON cannot be streamed (but commonly > > it can be). > > > > Imagine a pathological case of this shape: 1... <60GB of digits>. This > > is still a valid JSON (it doesn't have any limits on how many digits a > > number can have). And you cannot parse this number in a streaming way > > because in order to do that, you need to start with the least > > significant digit. > > Which is how arabic numbers were originally parsed, but when > westerners adopted them from a R->L written language, thet didn't flip > them around to match the L->R written language into which they were > being adopted. Interesting. > So now long numbers can't be parsed as a stream in software. They > should have anticipated this problem back in the 13th century and > flipped the numbers around. What am I missing? Handwavingly, start with the first digit, and as long as the next character is a digit, multipliy the accumulated result by 10 (or the appropriate base) and add the next value. Oh, and handle scientific notation as a special case, and perhaps fail spectacularly instead of recovering gracefully in certain edge cases. And in the pathological case of a single number with 60 billion digits, run out of memory (and complain loudly to the person who claimed that the file contained a "dataset"). But why do I need to start with the least significant digit? -- https://mail.python.org/mailman/listinfo/python-list