💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# Gson - `JsonParser` > 原文: [https://howtodoinjava.com/gson/gson-jsonparser/](https://howtodoinjava.com/gson/gson-jsonparser/) Gson [`JsonParser`](https://static.javadoc.io/com.google.code.gson/gson/2.8.5/com/google/gson/JsonParser.html)用于将 Json 数据解析为`JsonElement`并因此解析为`JsonObject`的解析树。 `JsonObject`可用于使用 JSON 字符串中的相应键来访问值。 ## 1.创建`JsonParser` `JsonParser`类只有一个默认的构造器,不需要任何参数或配置。 ```java JsonParser parser = new JsonParser(); ``` ## 2.解析 JSON `JsonParser`类提供 3 种方法来提供 JSON 作为源并将其解析为`JsonElement`的树。 * **`JsonElement parse(JsonReader json)`** – 使用[`JsonReader`](https://howtodoinjava.com/gson/jsonreader-streaming-json-parser/)将 JSON 作为令牌流读取,并从 JSON 流中返回下一个值作为分析树。 * **`JsonElement parse(java.io.Reader json)`** – 使用指定的读取器读取 JSON,并将 JSON 字符串解析为解析树。 * **`JsonElement parse(java.lang.String json)`** - 将指定的 JSON 字符串解析为解析树。 如果指定的文本不是有效的 JSON,则这三种方法都将抛出`JsonParseException`和`JsonSyntaxException`。 ## 3\. `JsonElement`,`JsonObject`和`JsonArray` 在`JsonElement`树中解析了 JSON 字符串后,我们就可以使用它的各种方法来访问 JSON 数据元素。 例如,使用一种类型检查方法找出它代表什么类型的 JSON 元素: ```java jsonElement.isJsonObject(); jsonElement.isJsonArray(); jsonElement.isJsonNull(); jsonElement.isJsonPrimitive(); ``` 我们可以使用相应的方法将`JsonElement`转换为 `JsonObject`和`JsonArray`: ```java JsonObject jsonObject = jsonElement.getAsJsonObject(); JsonArray jsonArray = jsonElement.getAsJsonArray(); ``` 一旦有了`JsonObject`或`JsonArray`实例,就可以使用其 `get()`方法从中提取字段。 ## 4\. Gson `JsonParser`示例 使用`JsonParser`的 **Java 程序**将 JSON 解析为 `JsonElement`(和`JsonObject`),并使用键获取 JSON 值。 ```java import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; public class Main { public static void main(String[] args) throws Exception { String json = "{'id': 1001, " + "'firstName': 'Lokesh'," + "'lastName': 'Gupta'," + "'email': 'howtodoinjava@gmail.com'}"; JsonElement jsonElement = new JsonParser().parse(json); JsonObject jsonObject = jsonElement.getAsJsonObject(); System.out.println( jsonObject.get("id") ); System.out.println( jsonObject.get("firstName") ); System.out.println( jsonObject.get("lastName") ); System.out.println( jsonObject.get("email") ); } } ``` 程序输出。 ```java 1001 "Lokesh" "Gupta" "howtodoinjava@gmail.com" ``` ## 5.使用`fromJson()`获得`JsonObject` 我们可以使用`Gson`实例和来自`Json()`方法的**实例**来达到相同的结果。 ```java String json = "{'id': 1001, " + "'firstName': 'Lokesh'," + "'lastName': 'Gupta'," + "'email': 'howtodoinjava@gmail.com'}"; JsonObject jsonObject = new Gson().fromJson(json, JsonObject.class); System.out.println(jsonObject.get("id")); System.out.println(jsonObject.get("firstName")); System.out.println(jsonObject.get("lastName")); System.out.println(jsonObject.get("email")); ``` 程序输出: ```java 1001 "Lokesh" "Gupta" "howtodoinjava@gmail.com" ``` 将有关使用`Jsonparser`从 Java 的 json 字符串中获取值的问题交给我。 学习愉快!