Gson is a Java library that can be used to convert Java Objects into their JSON representation. It can also be used to convert a JSON string to an equivalent Java object. Gson can work with arbitrary Java objects including pre-existing objects that you do not have source-code of.
There are a few open-source projects that can convert Java objects to JSON. However, most of them require that you place Java annotations in your classes; something that you can not do if you do not have access to the source-code. Most also do not fully support the use of Java Generics. Gson considers both of these as very important design goals.
Goals
• Provide simple toJson() and fromJson() methods to convert Java objects to JSON and vice-versa
• Allow pre-existing unmodifiable objects to be converted to and from JSON
• Extensive support of Java Generics
• Allow custom representations for objects
• Support arbitrarily complex objects (with deep inheritance hierarchies and extensive use of generic types)
Gson jar downloads are available from Maven Central. (https://maven-badges.herokuapp.com/maven-central/com.google.code.gson/gson)
• API Javadoc: Documentation for the current release (https://www.javadoc.io/doc/com.google.code.gson/gson)
• User guide: This guide contains examples on how to use Gson in your code. (https://github.com/google/gson/blob/master/UserGuide.md)
License
Gson is released under the Apache 2.0 license.