GSON - JsonParser
Jakob Jenkov |
The GSON JsonParser
class can parse a JSON string or stream into a tree structure of Java objects.
GSON also has two other parsers. The Gson JSON parser which can parse JSON into Java
objects, and the JsonReader which can parse a JSON string or stream into
tokens (a pull parser). This tutorial focuses on the JsonParser
though - GSON's tree parser.
Creating a JsonParser
Before you can use the GSON JsonParser
you must create a JsonParser
instance.
Here is an example of creating a JsonParser
instance:
JsonParser jsonParser = new JsonParser();
Parsing JSON Into a Tree Structure
Once you have created a JsonParser
you 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 = "{ \"f1\":\"Hello\",\"f2\":{\"f3\":\"World\"}}"; 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. You 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();
The JSON string parsed above is a JSON object. Thus, we will expect the JsonElement
to represent
a JSON object. If it does, we will do something with it. Here is how that looks:
if(jsonTree.isJsonObject()) { JsonObject jsonObject = jsonTree.getAsJsonObject(); }
Once you have a JsonObject
instance you can extract fields from it using its get()
method. Here is an example:
JsonObject jsonObject = jsonTree.getAsJsonObject(); JsonElement f1 = jsonObject.get("f1"); JsonElement f2 = jsonObject.get("f1");
You can inspect the type of each of these fields too, just like with the first JsonElement
obtained
from the JsonParser
parse()
method. Here is an example showing how:
if(f2.isJsonObject()){ JsonObject f2Obj = f2.getAsJsonObject(); JsonElement f3 = f2Obj.get("f3"); }
Here is a full example showing how to iterate the JsonElement
obtained from the JsonReader
:
JsonParser parser = new JsonParser(); String json = "{ \"f1\":\"Hello\",\"f2\":{\"f3\":\"World\"}}"; JsonElement jsonTree = parser.parse(json); if(jsonTree.isJsonObject()){ JsonObject jsonObject = jsonTree.getAsJsonObject(); JsonElement f1 = jsonObject.get("f1"); JsonElement f2 = jsonObject.get("f2"); if(f2.isJsonObject()){ JsonObject f2Obj = f2.getAsJsonObject(); JsonElement f3 = f2Obj.get("f3"); } }
Tweet | |
Jakob Jenkov |