Main Tutorials

How to parse JSON using Gson

This article shows how to parse JSON using Gson.

Table of contents:

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

8. References

About Author

author image
Founder of Mkyong.com, love Java and open source stuff. Follow him on Twitter. If you like my tutorials, consider make a donation to these charities.

Comments

Subscribe
Notify of
3 Comments
Most Voted
Newest Oldest
Inline Feedbacks
View all comments
Apostolos
2 years ago

What if JSON objects are into an JSON array?

For example
{
“data”:
[
{
“id”: 1000,
“name”: “ABC”
},
{
“id”: 1001,
“name”: “BCD”
},
{
“id”: 1002,
“name”: “CDE”
}
]
}

Renny
1 year ago

mkyong, you are the best!
So many your examples (include this one) helps me, you even cant imagine!
Thank you a LOT!