xref: /aosp_15_r20/external/gson/README.md (revision a8de600362638ea28fd6cb3225451dc706d269bb)
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![Build Status](https://github.com/google/gson/actions/workflows/build.yml/badge.svg)
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