In this quick guide, you'll learn how to use Gson to convert a Java Object to its JSON representation and vice versa. Gson provides toJson()
and fromJson()
methods to convert Java Objects to and from JSON string.
Dependencies
To add Gson to your Gradle project, add the following dependency to build.gradle
file:
implementation 'com.google.code.gson:gson:2.8.6'
For Maven, include the below dependency to your pom.xml
file:
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
</dependency>
Create Java Class
Let us first create a simple Java class for holding the User
information:
User.java
public class User {
public String name;
public String email;
private String[] roles;
private boolean admin;
public User() {
}
public User(String name, String email, String[] roles, boolean admin) {
this.name = name;
this.email = email;
this.roles = roles;
this.admin = admin;
}
// getters and setters, toString() .... (omitted for brevity)
}
Java Object to JSON
Convert Java Object to JSON String
To convert a Java Object into a JSON string, you can use the toJson()
method from the Gson
class, as shown below:
try {
// create user object
User user = new User("John Doe", "john.doe@example.com",
new String[]{"Member", "Admin"}, true);
// convert user object to JSON
String json = new Gson().toJson(user);
// print JSON string
System.out.println(json);
} catch (Exception ex) {
ex.printStackTrace();
}
The above code will generate the following JSON string:
{"name":"John Doe","email":"john.doe@example.com","roles":["Member","Admin"],"admin":true}
Convert Java Object to JSON File
The toJson()
method also accepts an instance of Writer
as a second parameter. You can use this parameter to output the JSON directly to a file:
try {
// create user object
User user = new User("John Doe", "john.doe@example.com",
new String[]{"Member", "Admin"}, true);
// create Gson instance
Gson gson = new Gson();
// create a writer
Writer writer = Files.newBufferedWriter(Paths.get("user.json"));
// convert user object to JSON file
gson.toJson(user, writer);
// close writer
writer.close();
} catch (Exception ex) {
ex.printStackTrace();
}
The user.json
file should contain the following JSON data:
{"roles":["Member","Admin"],"name":"John Deo","admin":true,"email":"john.doe@example.com"}
JSON to Java Object
Convert JSON String to Java Object
To convert a JSON string back to a Java Object, you can use the fromJson()
method from Gson
class, as shown below:
try {
// user as JSON string
String json = "{\"name\":\"John Doe\",\"email\":\"john.doe@example.com\"," +
"\"roles\":[\"Member\",\"Admin\"],\"admin\":true}";
// convert JSON string to Java Object
User user = new Gson().fromJson(json, User.class);
// print user
System.out.println(user);
} catch (Exception ex) {
ex.printStackTrace();
}
Here is the output of the above code:
User{name='John Doe', email='john.doe@example.com', roles=[Member, Admin], admin=true}
Convert JSON File to Java Object
The fromJson()
method also accepts an instance of Reader
to parse the file content into a Java Object. Here is an example:
try {
// create Gson instance
Gson gson = new Gson();
// create a reader
Reader reader = Files.newBufferedReader(Paths.get("user.json"));
// convert JSON string to User object
User user = gson.fromJson(reader,User.class);
// print user object
System.out.println(user);
// close reader
reader.close();
} catch (Exception ex) {
ex.printStackTrace();
}
For more Gson examples, check out the How to read and write JSON using Gson in Java tutorial.
✌️ Like this article? Follow @attacomsian on Twitter. You can also follow me on LinkedIn and DEV. ☕ Buy me a coffee (cost $3)
Need help to start a new Spring Boot or MEAN stack project? I am available for contract work. Hire me to accomplish your business goals with engineering and design. Let’s talk about your project: hi@attacomsian.com.