GSON-JsonParser
时间:2020-01-09 10:36:11 来源:igfitidea点击:
GSONJsonParser
类可以解析JSON字符串或者将其流化为Java对象的树形结构。 GSON还有另外两个解析器。可以将JSON解析为Java对象的Gson JSON解析器,以及可以解析JSON字符串或者流为令牌的JsonReader(拉式解析器)。本教程重点介绍通过GSON的树解析器进行的" JsonParser"。
创建一个JsonParser
必须先创建JsonParser
实例,然后才能使用GSONJsonParser
。这是一个创建JsonParser
实例的例子:
JsonParser jsonParser = new JsonParser();
将JSON解析为树结构
创建JsonParser
之后,我们可以使用它将JSON解析为树形结构。这是一个使用JsonParser
将JSON字符串解析为GSON对象的树结构的示例:
JsonParser parser = new JsonParser(); String json = "{ \"f1\":\"Hello\",\"f2\":{\"f3:\":\"World\"}}"; JsonElement jsonTree = parser.parse(json);
JSON的解析在代码的第三行中进行,方法是在JsonParser
上调用parse()
,并将对JSON字符串(或者流)的引用作为参数传递给解析。
迭代JSON树结构
解析的JSON树结构由GSON API中的对象组成。 JSON树结构的根是JsonElement
对象。我们可以使用一种类型检查方法找出代表什么类型的JSON元素:
jsonTree.isJsonObject(); jsonTree.isJsonArray(); jsonTree.isJsonNull(); jsonTree.isJsonPrimitive();
上面解析的JSON字符串是一个JSON对象。因此,我们期望JsonElement
代表一个JSON对象。如果是这样,我们将对其进行处理。看起来是这样的:
if(jsonTree.isJsonObject()) { JsonObject jsonObject = jsonTree.getAsJsonObject(); }
一旦有了JsonObject
实例,就可以使用其get()
方法从中提取字段。这是一个例子:
JsonObject jsonObject = jsonTree.getAsJsonObject(); JsonElement f1 = jsonObject.get("f1"); JsonElement f2 = jsonObject.get("f1");
我们也可以检查每个字段的类型,就像从JsonParser``parse()
方法获得的第一个JsonElement
一样。这是显示如何的示例:
if(f2.isJsonObject()){ JsonObject f2Obj = f2.getAsJsonObject(); JsonElement f3 = f2Obj.get("f3"); }
这是一个完整的示例,显示了如何迭代从JsonReader获得的JsonElement:
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"); } }