原文: https://howtodoinjava.com/gson/gson-jsonparser/

Gson JsonParser用于将 Json 数据解析为JsonElement并因此解析为JsonObject的解析树。 JsonObject可用于使用 JSON 字符串中的相应键来访问值。

1.创建JsonParser

JsonParser类只有一个默认的构造器,不需要任何参数或配置。

  1. JsonParser parser = new JsonParser();

2.解析 JSON

JsonParser类提供 3 种方法来提供 JSON 作为源并将其解析为JsonElement的树。

  • JsonElement parse(JsonReader json) – 使用JsonReader将 JSON 作为令牌流读取,并从 JSON 流中返回下一个值作为分析树。
  • JsonElement parse(java.io.Reader json) – 使用指定的读取器读取 JSON,并将 JSON 字符串解析为解析树。
  • JsonElement parse(java.lang.String json) - 将指定的 JSON 字符串解析为解析树。

如果指定的文本不是有效的 JSON,则这三种方法都将抛出JsonParseExceptionJsonSyntaxException

3. JsonElementJsonObjectJsonArray

JsonElement树中解析了 JSON 字符串后,我们就可以使用它的各种方法来访问 JSON 数据元素。

例如,使用一种类型检查方法找出它代表什么类型的 JSON 元素:

  1. jsonElement.isJsonObject();
  2. jsonElement.isJsonArray();
  3. jsonElement.isJsonNull();
  4. jsonElement.isJsonPrimitive();

我们可以使用相应的方法将JsonElement转换为 JsonObjectJsonArray

  1. JsonObject jsonObject = jsonElement.getAsJsonObject();
  2. JsonArray jsonArray = jsonElement.getAsJsonArray();

一旦有了JsonObjectJsonArray实例,就可以使用其 get()方法从中提取字段。

4. Gson JsonParser示例

使用JsonParserJava 程序将 JSON 解析为 JsonElement(和JsonObject),并使用键获取 JSON 值。

  1. import com.google.gson.JsonElement;
  2. import com.google.gson.JsonObject;
  3. import com.google.gson.JsonParser;
  4. public class Main
  5. {
  6. public static void main(String[] args) throws Exception
  7. {
  8. String json = "{'id': 1001, "
  9. + "'firstName': 'Lokesh',"
  10. + "'lastName': 'Gupta',"
  11. + "'email': 'howtodoinjava@gmail.com'}";
  12. JsonElement jsonElement = new JsonParser().parse(json);
  13. JsonObject jsonObject = jsonElement.getAsJsonObject();
  14. System.out.println( jsonObject.get("id") );
  15. System.out.println( jsonObject.get("firstName") );
  16. System.out.println( jsonObject.get("lastName") );
  17. System.out.println( jsonObject.get("email") );
  18. }
  19. }

程序输出。

  1. 1001
  2. "Lokesh"
  3. "Gupta"
  4. "howtodoinjava@gmail.com"

5.使用fromJson()获得JsonObject

我们可以使用Gson实例和来自Json()方法的实例来达到相同的结果。

  1. String json = "{'id': 1001, "
  2. + "'firstName': 'Lokesh',"
  3. + "'lastName': 'Gupta',"
  4. + "'email': 'howtodoinjava@gmail.com'}";
  5. JsonObject jsonObject = new Gson().fromJson(json, JsonObject.class);
  6. System.out.println(jsonObject.get("id"));
  7. System.out.println(jsonObject.get("firstName"));
  8. System.out.println(jsonObject.get("lastName"));
  9. System.out.println(jsonObject.get("email"));

程序输出:

  1. 1001
  2. "Lokesh"
  3. "Gupta"
  4. "howtodoinjava@gmail.com"

将有关使用Jsonparser从 Java 的 json 字符串中获取值的问题交给我。

学习愉快!