The JSON LotusScript Classes project was a great project but kinda slow, it parsed 15k of text in 0.5 seconds.
This code does that on 0.1 second, and 1 MB of JSON in under 7 seconds.
Changes from the original:
earlier versions were using a base class for error reporting.
this has been reintroduced.
Also tried to clean up error reporting a bit (not too verbose).
This also cleaned up all the built up variant arrays and objects, because the error-reporing variables were clogging up the output.
Also moved more or less static objects to the base class.
Moved static members to global variables
Main change: put string into NotesStream, and read in blocks of 65534 bytes, converting them two by two (UTF16) into Longs and comparing them to constants with the Unicode codes.
At first i converted the entire string into a two dimensional array of long, but I soon realized that would lead to memory problems. Luckily the object oriented structure enabled me to switch to read the pieces on demand.
Tried to adress all the defects reported on OpenNTF
Did not do anything with the date request by Cesar Mugnatto
Main feature: Parse speed. parses 15 k JSON string in approx 100 msec, 1 MB of JSON under 7 seconds.
TODO: I tried to use the stringbuilder class (by Julian Robichaux) in the parser but there it did not make things faster (not enough big string building to warrant the use of stringbuilder)
I strongly suspect that a rewrite of the Writer parts to use a global stringbuilder class for all string concatenates will speed it up nicely. However, I'm pressed for time now. It will have to wait.
Basically it is just a faster version of the original JSON LotusScript Classes project, so head over there to get the rest of the documentation