1*a8de6003SAndroid Build Coastguard Worker# Gson 2*a8de6003SAndroid Build Coastguard Worker 3*a8de6003SAndroid Build Coastguard WorkerGson 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. 4*a8de6003SAndroid Build Coastguard WorkerGson can work with arbitrary Java objects including pre-existing objects that you do not have source-code of. 5*a8de6003SAndroid Build Coastguard Worker 6*a8de6003SAndroid Build Coastguard WorkerThere 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. 7*a8de6003SAndroid Build Coastguard Worker 8*a8de6003SAndroid Build Coastguard Worker:information_source: Gson is currently in maintenance mode; existing bugs will be fixed, but large new features will likely not be added. If you want to add a new feature, please first search for existing GitHub issues, or create a new one to discuss the feature and get feedback. 9*a8de6003SAndroid Build Coastguard Worker 10*a8de6003SAndroid Build Coastguard Worker### Goals 11*a8de6003SAndroid Build Coastguard Worker * Provide simple `toJson()` and `fromJson()` methods to convert Java objects to JSON and vice-versa 12*a8de6003SAndroid Build Coastguard Worker * Allow pre-existing unmodifiable objects to be converted to and from JSON 13*a8de6003SAndroid Build Coastguard Worker * Extensive support of Java Generics 14*a8de6003SAndroid Build Coastguard Worker * Allow custom representations for objects 15*a8de6003SAndroid Build Coastguard Worker * Support arbitrarily complex objects (with deep inheritance hierarchies and extensive use of generic types) 16*a8de6003SAndroid Build Coastguard Worker 17*a8de6003SAndroid Build Coastguard Worker### Download 18*a8de6003SAndroid Build Coastguard Worker 19*a8de6003SAndroid Build Coastguard WorkerGradle: 20*a8de6003SAndroid Build Coastguard Worker```gradle 21*a8de6003SAndroid Build Coastguard Workerdependencies { 22*a8de6003SAndroid Build Coastguard Worker implementation 'com.google.code.gson:gson:2.10.1' 23*a8de6003SAndroid Build Coastguard Worker} 24*a8de6003SAndroid Build Coastguard Worker``` 25*a8de6003SAndroid Build Coastguard Worker 26*a8de6003SAndroid Build Coastguard WorkerMaven: 27*a8de6003SAndroid Build Coastguard Worker```xml 28*a8de6003SAndroid Build Coastguard Worker<dependency> 29*a8de6003SAndroid Build Coastguard Worker <groupId>com.google.code.gson</groupId> 30*a8de6003SAndroid Build Coastguard Worker <artifactId>gson</artifactId> 31*a8de6003SAndroid Build Coastguard Worker <version>2.10.1</version> 32*a8de6003SAndroid Build Coastguard Worker</dependency> 33*a8de6003SAndroid Build Coastguard Worker``` 34*a8de6003SAndroid Build Coastguard Worker 35*a8de6003SAndroid Build Coastguard Worker[Gson jar downloads](https://maven-badges.herokuapp.com/maven-central/com.google.code.gson/gson) are available from Maven Central. 36*a8de6003SAndroid Build Coastguard Worker 37*a8de6003SAndroid Build Coastguard Worker 38*a8de6003SAndroid Build Coastguard Worker 39*a8de6003SAndroid Build Coastguard Worker### Requirements 40*a8de6003SAndroid Build Coastguard Worker#### Minimum Java version 41*a8de6003SAndroid Build Coastguard Worker- Gson 2.9.0 and newer: Java 7 42*a8de6003SAndroid Build Coastguard Worker- Gson 2.8.9 and older: Java 6 43*a8de6003SAndroid Build Coastguard Worker 44*a8de6003SAndroid Build Coastguard WorkerDespite supporting older Java versions, Gson also provides a JPMS module descriptor (module name `com.google.gson`) for users of Java 9 or newer. 45*a8de6003SAndroid Build Coastguard Worker 46*a8de6003SAndroid Build Coastguard Worker#### JPMS dependencies (Java 9+) 47*a8de6003SAndroid Build Coastguard WorkerThese are the optional Java Platform Module System (JPMS) JDK modules which Gson depends on. 48*a8de6003SAndroid Build Coastguard WorkerThis only applies when running Java 9 or newer. 49*a8de6003SAndroid Build Coastguard Worker 50*a8de6003SAndroid Build Coastguard Worker- `java.sql` (optional since Gson 2.8.9) 51*a8de6003SAndroid Build Coastguard WorkerWhen this module is present, Gson provides default adapters for some SQL date and time classes. 52*a8de6003SAndroid Build Coastguard Worker 53*a8de6003SAndroid Build Coastguard Worker- `jdk.unsupported`, respectively class `sun.misc.Unsafe` (optional) 54*a8de6003SAndroid Build Coastguard WorkerWhen this module is present, Gson can use the `Unsafe` class to create instances of classes without no-args constructor. 55*a8de6003SAndroid Build Coastguard WorkerHowever, care should be taken when relying on this. `Unsafe` is not available in all environments and its usage has some pitfalls, 56*a8de6003SAndroid Build Coastguard Workersee [`GsonBuilder.disableJdkUnsafe()`](https://javadoc.io/doc/com.google.code.gson/gson/latest/com.google.gson/com/google/gson/GsonBuilder.html#disableJdkUnsafe()). 57*a8de6003SAndroid Build Coastguard Worker 58*a8de6003SAndroid Build Coastguard Worker### Documentation 59*a8de6003SAndroid Build Coastguard Worker * [API Javadoc](https://www.javadoc.io/doc/com.google.code.gson/gson): Documentation for the current release 60*a8de6003SAndroid Build Coastguard Worker * [User guide](UserGuide.md): This guide contains examples on how to use Gson in your code 61*a8de6003SAndroid Build Coastguard Worker * [Troubleshooting guide](Troubleshooting.md): Describes how to solve common issues when using Gson 62*a8de6003SAndroid Build Coastguard Worker * [Change log](CHANGELOG.md): Changes in the recent versions 63*a8de6003SAndroid Build Coastguard Worker * [Design document](GsonDesignDocument.md): This document discusses issues we faced while designing Gson. It also includes a comparison of Gson with other Java libraries that can be used for Json conversion 64*a8de6003SAndroid Build Coastguard Worker 65*a8de6003SAndroid Build Coastguard WorkerPlease use the ['gson' tag on StackOverflow](https://stackoverflow.com/questions/tagged/gson) or the [google-gson Google group](https://groups.google.com/group/google-gson) to discuss Gson or to post questions. 66*a8de6003SAndroid Build Coastguard Worker 67*a8de6003SAndroid Build Coastguard Worker### Related Content Created by Third Parties 68*a8de6003SAndroid Build Coastguard Worker * [Gson Tutorial](https://www.studytrails.com/java/json/java-google-json-introduction/) by `StudyTrails` 69*a8de6003SAndroid Build Coastguard Worker * [Gson Tutorial Series](https://futurestud.io/tutorials/gson-getting-started-with-java-json-serialization-deserialization) by `Future Studio` 70*a8de6003SAndroid Build Coastguard Worker * [Gson API Report](https://abi-laboratory.pro/java/tracker/timeline/gson/) 71*a8de6003SAndroid Build Coastguard Worker 72*a8de6003SAndroid Build Coastguard Worker### License 73*a8de6003SAndroid Build Coastguard Worker 74*a8de6003SAndroid Build Coastguard WorkerGson is released under the [Apache 2.0 license](LICENSE). 75*a8de6003SAndroid Build Coastguard Worker 76*a8de6003SAndroid Build Coastguard Worker``` 77*a8de6003SAndroid Build Coastguard WorkerCopyright 2008 Google Inc. 78*a8de6003SAndroid Build Coastguard Worker 79*a8de6003SAndroid Build Coastguard WorkerLicensed under the Apache License, Version 2.0 (the "License"); 80*a8de6003SAndroid Build Coastguard Workeryou may not use this file except in compliance with the License. 81*a8de6003SAndroid Build Coastguard WorkerYou may obtain a copy of the License at 82*a8de6003SAndroid Build Coastguard Worker 83*a8de6003SAndroid Build Coastguard Worker http://www.apache.org/licenses/LICENSE-2.0 84*a8de6003SAndroid Build Coastguard Worker 85*a8de6003SAndroid Build Coastguard WorkerUnless required by applicable law or agreed to in writing, software 86*a8de6003SAndroid Build Coastguard Workerdistributed under the License is distributed on an "AS IS" BASIS, 87*a8de6003SAndroid Build Coastguard WorkerWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 88*a8de6003SAndroid Build Coastguard WorkerSee the License for the specific language governing permissions and 89*a8de6003SAndroid Build Coastguard Workerlimitations under the License. 90*a8de6003SAndroid Build Coastguard Worker``` 91*a8de6003SAndroid Build Coastguard Worker 92*a8de6003SAndroid Build Coastguard Worker### Disclaimer 93*a8de6003SAndroid Build Coastguard Worker 94*a8de6003SAndroid Build Coastguard WorkerThis is not an officially supported Google product. 95