json-io is a powerful and lightweight Java library that simplifies JSON serialization and deserialization while handling complex object graphs with ease. Unlike basic JSON parsers, json-io preserves object references, handles polymorphic types, and maintains cyclic relationships in your data structures. Whether you're working with sophisticated domain models, dealing with legacy Java objects, or need high-performance JSON processing, json-io provides a robust solution with minimal configuration.
Key Features:
- Preserves object references and handles cyclic relationships
- Supports polymorphic types and complex object graphs
- Zero external dependencies (other than java-util)
- Fully compatible with both JPMS and OSGi environments
- Lightweight (224K for json-io.jar, 405K for java-util)
- Compatible with JDK 1.8 through JDK 23
- Extensive configuration options via ReadOptions and WriteOptions
- Featured on json.org
This library is fully compatible with JPMS, commonly known as Java Modules. It includes a module-info.class
file that
specifies module dependencies and exports.
This library also supports OSGi environments. It comes with pre-configured OSGi metadata in the MANIFEST.MF
file, ensuring easy integration into any OSGi-based application.
Both of these features ensure that our library can be seamlessly integrated into modular Java applications, providing robust dependency management and encapsulation.
To include in your project:
implementation 'com.cedarsoftware:json-io:4.32.0'
<dependency>
<groupId>com.cedarsoftware</groupId>
<artifactId>json-io</artifactId>
<version>4.32.0</version>
</dependency>
- Bundling: Both JPMS (Java Platform Module System) and OSGi (Open Service Gateway initiative)
- Maintained: Fully
- Java Package: com.cedarsoftware.io
- Java: JDK17+ (Class file 61 format, includes module-info.class - multi-release JAR)
- API
- Static methods on JsonIo: toJson(), toObjects(), formatJson(), deepCopy()
- Use ReadOptionsBuilder and WriteOptionsBuilder to configure
JsonIo
- Use JsonReader.ClassFactory for difficult classes (hard to instantiate & fill)
- Use JsonWriter.JsonClassWriter to customize the output JSON for a particular class
- Updates will be 5.1.0, 5.2.0, ...
- Version: 4.32.0
- Bundling: Both JPMS (Java Platform Module System) and OSGi (Open Service Gateway initiative)
- Maintained: Fully
- Java Package: com.cedarsoftware.io
- Java: JDK1.8+ (Class file 52 format, includes module-info.class - multi-release JAR)
- API
- Static methods on JsonIo: toJson(), toObjects(), formatJson(), deepCopy()
- Use ReadOptionsBuilder and WriteOptionsBuilder to configure
JsonIo
- Use JsonReader.ClassFactory for difficult classes (hard to instantiate & fill)
- Use JsonWriter.JsonClassWriter to customize the output JSON for a particular class
- Updates will be 4.33.0, 4.34.0, ...
- Version: 4.14.3
- Bundling: Both JPMS (Java Platform Module System) and OSGi (Open Service Gateway initiative)
- Maintained: Bug fixes, CVE's
- Java Package: com.cedarsoftware.util.io
- Java: JDK1.8+ (Class file 52 format, includes module-info.class - multi-release JAR)
- API
- Static methods on JsonReader: jsonToJava(), jsonToMaps(), special: jsonObjectsToJava()
- Static methods on JsonWriter: objectToJson()), formatJson()
- Configuration via
Map
with constants defined in JsonReader/JsonWriter.- Use JsonReader.JsonClassReader or JsonReader.JsonClassReaderEx for customer reader
- Use JsonReader.assignInstantiator() when
json-io
cannot construct a particular class- Use JsonWriter.JsonClassWriter or JsonWriter.JsonClassWriterEx to customize particular class output JSON
- Updates will be 4.14.4, 4.14.5, ...
Featured on json.org.
For useful Java utilities, check out java-util
YourKit supports open source projects with its full-featured Java Profiler. YourKit, LLC is the creator of YourKit Java Profiler and YourKit .NET Profiler, innovative and intelligent tools for profiling Java and .NET applications.
Copyright (c) 2007 Cedar Software LLC.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
<a href="http://www.apache.org/licenses/LICENSE-2.0">License</a>
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
by John DeRegnaucourt and Kenny Partlow