简介
由于强大的 Java JSON 处理 (JSON-P) API,Java 程序可以处理 JSON 数据。Web 服务器和客户端经常使用轻量级 JSON 数据传输标准交换数据。JSON-P 提供对象模型 API 和流 API 作为处理 JSON 数据的两种主要方法。
让我们来谈谈这两种策略,并用示例来展示它们是如何工作的以及它们可以做什么。我们希望读者通过理解本文对 Java JSON 处理 (JSON-P) 的解释和示例,了解对象模型 API 和流 API 以及编程示例。
Java JSON 处理 (JSON-P) 的特点
我们知道 JSON-P 为我们提供了两种不同的功能来处理 JSON 数据 -
对象模型 API - 此方法将 JSON 数据显示为由对象、数组和值组成的结构,很像树。它与 XML 的 DOM 解析器相当。对象模型 API 使导航和修改 JSON 部分变得简单,同时管理微小的 JSON 数据。
Streaming API - Streaming API 按顺序处理 JSON 数据,而不是将完整的 JSON 放入内存中,使其成为一种更节省内存的方法。它适合处理海量JSON数据,与使用StAX解析器处理XML相当。
使用对象模型 API 读取和解析 JSON 数据
在此编程示例中,我们将学习如何使用对象模型 API 读取和解析 JSON 数据。
例子
import javax.json.Json; import javax.json.JsonObject; import javax.json.JsonReader; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; public class ModObjtest { public static void main(String args []) throws IOException { try (InputStream fis = new FileInputStream("data.json"); JsonReader jsonReader = Json.createReader(fis)) { JsonObject jsonObject = jsonReader.readObject(); // Step 4: fetch data from the JsonObject String name = jsonObject.getString("name"); int age = jsonObject.getInt("age"); boolean isMarried = jsonObject.getBoolean("isMarried"); // print data System.out.println("Name: " + name); System.out.println("Age: " + age); System.out.println("Married: " + isMarried); } } }
输出
** data.json output** { "name": "Sheli Sharma", "age": 28, "isMarried": true } ** ModObjtest.java output** Name: Sheli Sharma Age: 28 Married: true
为此,我们在此程序中导入了一些重要的包。
javax.json.Json; javax.json.JsonObject; javax.json.JsonReader; java.io.FileInputStream; java.io.IOException; java.io.InputStream;
之后,我们定义了一个名为 ModObjTest 的类,并在该类中调用了 main () 函数。在 main 函数中,我们抛出 IOException 并打开输入流以从文件中读取 JSON 数据。
try (InputStream fis = new FileInputStream("data.json");
之后,我们通过创建 jsonReader 类的名为 jsonReader 的对象并调用名为 readObject() 的函数,创建了一个 JsonReader 来读取 JSON 数据。
JsonReader jsonReader = Json.createReader(fis)) {
现在我们通过创建名为 jsonObject 的类的名为 jsonObject 的对象并调用名为 readobject () 的函数,将 JSON 数据解析为 JsonObject。
JsonObject jsonObject = jsonReader.readObject();
现在,我们通过声明名为“name”的字符串并调用名为 getString () 的函数并将“name”的值作为参数传递到函数的括号内,从 JsonObject 中获取数据。
String name = jsonObject.getString("name");
现在我们声明了另一个名为“age”的整数类型变量,并调用另一个名为 getInt() 的函数,并将函数括号内的“age”值作为参数传递。
int age = jsonObject.getInt("age");
现在我们调用了另一个名为 getBoolean () 的函数,并将函数括号内的值“isMarried”作为参数传递,并将该值存储到另一个名为“ismarried”的布尔类型变量中。
boolean isMarried = jsonObject.getBoolean("isMarried");
现在我们已经打印了所有数据以获得所需的输出。
System.out.println("Name: " + name); System.out.println("Age: " + age); System.out.println("Married: " + isMarried);
使用 JSON-P Streaming API 生成 JSON 数据
在这个特定的编程示例中,我们将了解如何使用 JSON-P Streaming API 生成 JSON 数据。
例子
import javax.json.Json; import javax.json.JsonObject; import javax.json.stream.JsonGenerator; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; public class StreamJsontest { public static void main(String args []) throws IOException { try (OutputStream fos = new FileOutputStream("output.json"); JsonGenerator jsonGenerator = Json.createGenerator(fos)) { // Generate JSON data using the Streaming API jsonGenerator.writeStartObject() .write("name", "Aishee") .write("age", 25) .write("isStudent", true) .writeStartObject("indianName") .write("firstName", "Aarav") .write("lastName", "Sharma") .writeEnd() .writeStartObject("indianAddress") .write("homeNo", "325") .write("street", "SY Avenue") .write("hometown", "Kolkata") .write("state", "WB") .write("pin", "400001") .writeEnd() .writeEnd(); // Close the JSON generator jsonGenerator.close(); }s // Read JSON data from the file and convert it to a string String jsonString = readJsonFromFile("output.json"); System.out.println(jsonString); } private static String readJsonFromFile(String file) throws IOException { try (InputStream fis = new FileInputStream(file); JsonReader jsonReader = Json.createReader(fis)) { JsonObject jsonObject = jsonReader.readObject(); return jsonObject.toString(); } } }
输出
{"name":"Aishee","age":25,"isStudent":true, "indianName":{"firstName":"Aarav","lastName":"Sharma"}, "indianAddress":{"homeNo":"325","street":"SY Avenue", "hometown":"Kolkata","state":"WB","pin":"400001"}}
为此,我们首先在此程序中导入了一些重要的包。
javax.json.Json; javax.json.JsonObject; javax.json.JsonReader; java.io.FileInputStream; java.io.IOException; java.io.InputStream;
现在我们已经定义了一个名为 StreamJsonTest 的类,并且在函数内部我们调用了抛出 IOException 的 main () 函数。在 main () 函数中,我们通过调用名为 writeStarObject() 的函数,使用 Streaming API 生成了 JSON 数据。
jsonGenerator.writeStartObject()
现在我们通过调用另一个名为 json.genearator 的函数来关闭 json 生成器。
jsonGenerator.close();
之后,我们从文件中读取 JSON 数据,并通过调用一个更重要的函数 readJsonFromFile () 将其转换为字符串,并打印 json 字符串。
String jsonString = readJsonFromFile("output.json"); System.out.println(jsonString);
现在我们抛出了另一个重要的异常 IOException 并创建了 jsonReadObject 到名为 jsonReadObject 的类并调用另一个名为 createReader() 的函数。
JsonReader jsonReader = Json.createReader(fis))
最后我们返回了 jsonObject.toString()。
总结
在本文中,我们涵盖了 Java 中 JSON 处理的所有主要主题。对于IT软件开发行业的现状来说,java是一个非常重要的话题。java中Json处理的价值是无价的。因此,我们尽力通过逻辑编程示例及其解释来涵盖该主题的所有方面。文章来源:https://www.toymoban.com/diary/java/403.html
文章来源地址https://www.toymoban.com/diary/java/403.html
到此这篇关于Java JSON 处理 (JSON-P) 及示例的文章就介绍到这了,更多相关内容可以在右上角搜索或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!