Как BeniBela уже объяснил, это разница между "пробежать по строке и побить её на токены" и "пробежать по строке и побить её на токены" + "проверить синтаксис" + "построить в динамической памяти дерево документа". Все парсеры в моём списке выше строят дерево.
Но в lgJson есть и просто валидатор("пробежать по строке и побить её на токены" + "проверить синтаксис"), он отрабатывает citylots.json примерно за 520 мс, а Mormot2.IsValidJson() за 220 мс. Правда Мормоту тут особой веры нет, у него всё джейсон, что шевелитсясодержит хоть одну курвоскобку.