How to parse JSON using Gson
This article shows how to parse JSON using Gson.
Table of contents:
- 1. Download Google Gson
- 2. A Java Object
- 3. Parse JSON String using Gson
- 4. Parse JSON Array using Gson
- 5. Convert Java Object to JSON using Gson
- 6. Unstructured JSON
- 7. Download Source Code
- 8. References
P.S Tested with Gson 2.10.1
1. Download Google Gson
Declare gson
in the pom.xml
.
pom.xml
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.10.1</version>
</dependency>
2. A Java Object
A simple Java object, Person
, for testing later.
package com.mkyong.json.model;
public class Person {
private String name;
private int age;
// getters, setters, constructors and etc...
}
3. Parse JSON String using Gson
A simple JSON string.
{
"name": "mkyong",
"age": 20
}
The following example uses Gson to parse JSON data and convert it to the Java object Person
.
GsonParseJsonStringExample.java
package com.mkyong.json.gson;
import com.google.gson.Gson;
import com.mkyong.json.model.Person;
public class GsonParseJsonStringExample {
public static void main(String[] args) {
String json = "{\"name\": \"mkyong\", \"age\": 20}";
Gson gson = new Gson();
Person person = gson.fromJson(json, Person.class);
System.out.println(person);
}
}
4. Parse JSON Array using Gson
JSON Array.
[
{
"name": "mkyong",
"age": 20
},
{
"name": "ah pig",
"age": 40
},
{
"name": "ah dog",
"age": 30
}
]
The following example uses Gson TypeToken
to parse a JSON array and convert it to a list of objects List<Person>
.
GsonParseJsonArrayExample.java
package com.mkyong.json.gson;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.mkyong.json.model.Person;
import java.lang.reflect.Type;
import java.util.List;
public class GsonParseJsonArrayExample {
public static void main(String[] args) {
String json = "[" +
"{\"name\": \"mkyong\", \"age\": 20}," +
"{\"name\": \"ah pig\", \"age\": 40}," +
"{\"name\": \"ag dog\", \"age\": 30}" +
"]";
Gson gson = new Gson();
// Create a List<Person> type token
Type personListType = new TypeToken<List<Person>>() {}.getType();
// Json array to List of objects
List<Person> list = gson.fromJson(json, personListType);
for (Person person : list) {
System.out.println(person);
}
}
}
Output
Person{name='mkyong', age=20}
Person{name='ah pig', age=40}
Person{name='ag dog', age=30}
5. Convert Java Object to JSON using Gson
The following example uses Gson to convert a Java object Person
to a JSON string.
GsonObjectToJsonExample.java
package com.mkyong.json.gson;
import com.google.gson.Gson;
import com.mkyong.json.model.Person;
public class GsonObjectToJsonExample {
public static void main(String[] args) {
Person person = new Person("mkyong", 42);
Gson gson = new Gson();
// Java object to json
String json = gson.toJson(person);
//{"name":"mkyong","age":42}
System.out.println(json);
// json to Java object
Person newPerson = gson.fromJson(json, Person.class);
//Person{name='mkyong', age=42}
System.out.println(newPerson);
}
}
Output
{"name":"mkyong","age":42}
Person{name='mkyong', age=42}
6. Unstructured JSON
JSON containing objects as JSON array.
{
"data": [
{"id": 1000, "name": "ABC"},
{"id": 1001, "name": "BCD"},
{"id": 1002, "name": "CDE"}
]
}
We can define Java classes that map to the structure of the JSON.
DataItem.java
package com.mkyong.json.gson.model;
public class DataItem {
private int id;
private String name;
@Override
public String toString() {
return "DataItem{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
DataWrapper.java
package com.mkyong.json.gson.model;
import java.util.List;
public class DataWrapper {
List<DataItem> data;
public List<DataItem> getData() {
return data;
}
public void setData(List<DataItem> data) {
this.data = data;
}
@Override
public String toString() {
return "DataWrapper{" +
"data=" + data +
'}';
}
}
Parse JSON using Gson.
GsonParseJsonStringExample2.java
package com.mkyong.json.gson;
import com.google.gson.Gson;
import com.mkyong.json.gson.model.DataWrapper;
import com.mkyong.json.model.Person;
public class GsonParseJsonStringExample2 {
public static void main(String[] args) {
String json = """
{
"data": [
{"id": 1000, "name": "ABC"},
{"id": 1001, "name": "BCD"},
{"id": 1002, "name": "CDE"}
]
}
""";
Gson gson = new Gson();
DataWrapper data = gson.fromJson(json, DataWrapper.class);
System.out.println(data);
}
}
Output
DataWrapper{data=[DataItem{id=1000, name='ABC'}, DataItem{id=1001, name='BCD'}, DataItem{id=1002, name='CDE'}]}
7. Download Source Code
$ git clone https://github.com/mkyong/java-json
$ cd gson
What if JSON objects are into an JSON array?
For example
{
“data”:
[
{
“id”: 1000,
“name”: “ABC”
},
{
“id”: 1001,
“name”: “BCD”
},
{
“id”: 1002,
“name”: “CDE”
}
]
}
We can define Java classes that map to the structure of the JSON.
See the above example 6
https://mkyong.com/java/how-to-parse-json-with-gson/#unstructured-json
mkyong, you are the best!
So many your examples (include this one) helps me, you even cant imagine!
Thank you a LOT!