GSON - JsonParser


It a parser to parse Json into a parse tree of JsonElements, The GSON's JsonParser class can parse a JSON string or stream into a tree structure of Java objects.

Creating a JsonParser

JsonParser jsonParser = new JsonParser();

Parsing JSON Into a Tree Structure

Once we created a JsonParser we can parse JSON into a tree structure with it. Here is an example of parsing a JSON string into a tree structure of GSON objects with the JsonParser:

JsonParser parser = new JsonParser();
String json = "{ \"name\":\"Alex\",\"age\":29}";
JsonElement jsonTree = parser.parse(json);

The parsing of the JSON happens in the third line of code, by calling parse() on the JsonParser, passing as parameter a reference to the JSON string (or stream) to parse.

Iterating the JSON Tree Structure

The parsed JSON tree structure consists of objects from the GSON API. The root of a JSON tree structure is a JsonElement object. we can find out what type of JSON element it represents using one of the type checking methods:

jsonTree.isJsonObject();
jsonTree.isJsonArray();
jsonTree.isJsonNull();
jsonTree.isJsonPrimitive();

Abocve JSON string parsed as a JSON object. Thus, we will expect the JsonElement to represent a JSON object. Check this snippet:

if(jsonTree.isJsonObject()) {
    JsonObject jsonObject = jsonTree.getAsJsonObject();
}

Once we have a JsonObject instance we can extract fields from it using it's get() method. Here is an example:

JsonObject jsonObject = jsonTree.getAsJsonObject();
JsonElement name = jsonObject.get("name");
JsonElement age = jsonObject.get("age");

Complete Example of JsonParser

/**
 * @author TutorialToUs.com
 */
package com.tutorialtous.gson;

import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

public class JSonParserExample {
	public static void main(String args[]) {
		String jsonstring = "{\"name\":\"Alex\",\"age\":29}";
		JsonParser parser = new JsonParser();
		JsonElement element = parser.parse(jsonstring);
		if (element.isJsonObject()) {
			JsonObject jsonobj = element.getAsJsonObject();
			if (jsonobj.get("name") != null) {
				System.out.println(jsonobj.get("name").getAsString());
			}
			if (jsonobj.get("age") != null) {
				System.out.println(jsonobj.get("age").getAsNumber());
			}
		}

	}
}
output:-
Alex
29