Re: additional comments Amirouche Boubekki 20 Jun 2020 07:30 UTC

Le jeu. 28 mai 2020 à 16:25, John Cowan <xxxxxx@ccil.org> a écrit :
>
> I contributed to that RFC and suggested the use of RS (record separator).  The idea of having such a thing is that if there is a syntax error in a particular JSON value, a stream processor can skip down to the next value reliably, which is not the case for whitespace..  I urge all authors of JSON parsers to check for and ignore an RS before a top-level JSON value is read (it may be preceded or followed by whitespace, of course).
>

If we make RS part of whitespace and allowed in JSON text unlike what
the specification says, the implementation is similar to
json-read-lines. Something along the line of:

(call-with-input-string "[1]\n[2]\n[3]\n"
  (lambda (port)
    (let loop ((obj (json-read port))
                   (out '()))
      (if (eof-object? obj)
        (reverse out)
        (loop (json-read port) (cons obj out)))))

The only difference would be to wrap json-read inside a guard and skip
json-error?

Mind the fact that json-read-lines is not part of the specification, so far.

ref: https://datatracker.ietf.org/doc/rfc7464/
ref: https://github.com/scheme-requests-for-implementation/srfi-180/blob/95e17fa77295f95a259215bf57e34f37d2fc08e9/srfi/180/checks.sld#L1427-L1455