A high-performance JVM JSON library with advanced compile-time databinding for Java, Android, Scala, and Kotlin.
DSL-JSON is a high-performance JSON serialization library for the JVM, designed to be the fastest Java JSON library with advanced compile-time databinding support. It processes JSON at the byte level to minimize overhead and supports Java, Android, Scala, and Kotlin through an annotation processor that generates efficient serialization code at compile time.
JVM developers working on performance-critical applications, such as high-throughput APIs, Android apps, or Scala/Kotlin services, who need fast JSON serialization with minimal garbage collection.
Developers choose DSL-JSON for its unmatched performance, which rivals binary codecs, and its compile-time databinding that eliminates reflection overhead while providing features like custom converters, streaming support, and compatibility with existing annotations.
High performance JVM JSON library
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Independent benchmarks show DSL-JSON performs on par with binary codecs, achieved through byte-level processing and efficient algorithms that minimize branching.
The annotation processor generates encoding/decoding code at compile time, eliminating reflection and providing type safety with features like mandatory property validation.
Reuses instances and avoids unnecessary allocations, reducing garbage collection overhead—critical for high-throughput applications as emphasized in the README's allocation-friendly focus.
Seamlessly supports Java, Android, Scala, and Kotlin with native type handling, such as Scala Option types and Kotlin non-null annotations, without extra configuration.
Configuring the annotation processor for different languages and build tools, like Android or Kotlin with kapt, requires careful setup and can be error-prone, as noted in the README's Gradle examples.
Lacks a high-level String API, forcing developers to manually convert between bytes and strings, which adds boilerplate code and complicates simple use cases.
While compatible with Jackson and JsonB annotations, it lacks the extensive plugin ecosystem of libraries like Jackson, requiring custom converters for many advanced or niche types.