<div dir="ltr">> Could you include <a href="https://github.com/BeRo1985/pasjson" target="_blank">https://github.com/BeRo1985/pasjson</a> in the comparison?<div><br></div><div>Sure. I also have a few other people have requested. I will also list the license of each in the first table.</div><div><br></div><div>Regarding a huge gigabytes of JSON in a file, I know a small portion of programmers of people might be inclined use it as an offline database format much like CSV. Even though by far most JSON is used with XMLHttpRequest, REST APIS, or storing settings and configurations, there are bound to be endless requests for use cases with JSON.</div><div><br></div><div>For example to accommodate the reading a huge files as indoividual records a helper class operating outside the definition of a JSON parser could accomplish this goal. For example, it would be relatively easy to write in a separate file:</div><div><br></div><div>type </div><div>  TJsonStreamReader = class</div><div>  public</div><div>    constructor Create(Stream: TStream; OwnsStream: Boolean = False); </div><div>    constructor CreateFromFile(const FileName: string); </div><div>    destructor Destroy;</div><div>    function Read(out Parser: TSomeJsonParser): Boolean;</div><div>  end;</div><div><br></div><div>Then use as ...</div><div><br></div><div>var</div><div>  R: TJsonStreamReader;</div><div>  P: TSomeJsonParser;</div><div>begin</div><div>  R := TJsonStreamReader.Create(InputStreamOrFileName);</div><div>  try</div><div>    while R.Read(P) do</div><div>      // Read JSON record here</div><div>  finally<br></div><div>    R.Free;</div><div>  end;</div><div>end;</div><div><br></div><div>And in this way a large file could be read in small blocks and given back to the user as a parser to allow for processing of individual records. The benefit of breaking this into its own class is that you do not need to mix in every possible use case into the parser. You can simply write separate use cases into their own independent units, rather than trying to make a super class which handles every possible concern.</div><div><br></div><div>For example if wanted to store object state using RTTI in a JSON file, create a separate TJsonObjectState class to handle this for you. Or if you wanted to create a database table from a JSON file, or create a JSON file from a database table, then again write this into its own class.</div><div><br></div><div>The point is, saying this JSON class does lots of these things is the wrong approach (IMO), as these use case scenarios as likely endless and would add unnecessary cruft to a parser. Even designing a plug in or other extensible seems unnecessary, when simple separate classes to add functionality works as well without all the complexity.</div><div><br></div><div><br></div><div><br></div></div>