Skip to main content

How to parse JSON using GSON in Kotlin Android

How to parse JSON using GSON in Kotlin Android.

Here's a step-by-step tutorial on how to parse JSON using GSON in Kotlin Android.

Step 1: Add GSON Dependency

To use GSON in your Android project, you need to add the GSON dependency to your project's build.gradle file. Open the build.gradle file for the module you are working on and add the following line to the dependencies section:

implementation 'com.google.code.gson:gson:2.8.6'

Step 2: Create a Model Class

Create a Kotlin data class that represents the structure of the JSON data you want to parse. Each property in the data class should correspond to a key in the JSON object. For example, if your JSON object has a "name" key and a "age" key, your data class should have properties with the same names.

data class Person(
val name: String,
val age: Int
)

Step 3: Parse JSON using GSON

To parse JSON using GSON, you need to create a GSON instance and use its fromJson() method. The fromJson() method takes two parameters - the JSON string you want to parse and the type of object you want to parse it into.

val gson = Gson()
val jsonString = "{\"name\":\"John\",\"age\":30}" // JSON string to parse
val person: Person = gson.fromJson(jsonString, Person::class.java)

In the above example, we create a GSON instance using Gson(). We then pass the JSON string (jsonString) and the target class (Person::class.java) to the fromJson() method. The fromJson() method parses the JSON string and returns an instance of the Person class.

Step 4: Handle Optional Fields

If your JSON data has optional fields, you can use the @SerializedName annotation to map the JSON keys to class properties. This allows GSON to correctly parse the JSON even if some fields are missing.

data class Person(
@SerializedName("name") val name: String,
@SerializedName("age") val age: Int,
@SerializedName("address") val address: String? // optional field
)

In the above example, the address field is marked as nullable (String?) because it is an optional field in the JSON data.

Step 5: Handle JSON Arrays

If your JSON data contains an array, you can parse it using GSON by creating another data class to represent the items in the array. For example, if your JSON array contains a list of Person objects, you can create another data class called PersonList to represent the array.

data class PersonList(
val persons: List<Person>
)

To parse the JSON array, use the same fromJson() method as before, but this time pass the PersonList class as the target type.

val gson = Gson()
val jsonArray = "[{\"name\":\"John\",\"age\":30},{\"name\":\"Jane\",\"age\":25}]" // JSON array to parse
val personList: PersonList = gson.fromJson(jsonArray, PersonList::class.java)

In the above example, we create a JSON array string (jsonArray) and parse it into a PersonList object.

Step 6: Error Handling

When parsing JSON using GSON, it's important to handle any parsing errors that may occur. GSON provides a JsonSyntaxException that is thrown if the JSON string is not well-formed or if there is a mismatch between the JSON structure and the target class structure.

To handle parsing errors, wrap the fromJson() method call in a try-catch block and handle the JsonSyntaxException accordingly.

try {
val gson = Gson()
val jsonString = "{\"name\":\"John\",\"age\":\"thirty\"}" // incorrect age value
val person: Person = gson.fromJson(jsonString, Person::class.java)
} catch (e: JsonSyntaxException) {
// Handle parsing error
Log.e("JSON Parsing", "Error parsing JSON: ${e.message}")
}

In the above example, we catch any JsonSyntaxException thrown during the parsing process and log the error message.

And that's it! You now know how to parse JSON using GSON in Kotlin Android.