Java 9是否内置JSON支持?Java SE类中如何导入?
Java 9内置JSON支持及Socket程序中的使用方法
嘿,这个问题问得很到位!我来给你详细拆解一下:
一、Java 9是否内置JSON相关功能?
答案是肯定的。Java 9将原本属于Java EE的**JSON-P(Java API for JSON Processing)**纳入了Java SE标准库,作为系统模块java.json提供。这意味着你不需要额外引入第三方JSON库(比如Gson、Jackson),就能直接在普通Java SE程序中处理JSON数据,完全符合你不涉及Java EE的要求。
二、在Socket程序的普通Java SE类中如何导入使用?
根据你的项目是否采用模块化(Java 9+的模块系统),使用方式略有不同:
1. 模块化项目(带有module-info.java)
如果你的项目是模块化的,首先需要在module-info.java中声明对java.json模块的依赖:
module your.module.name { requires java.json; }
之后在你的Socket类中,直接导入javax.json包下的相关类即可,比如:
import javax.json.Json; import javax.json.JsonObject; import javax.json.JsonReader; // 按需导入其他类,比如JsonArray、JsonWriter等
2. 非模块化项目(传统classpath模式)
如果你的项目还是用传统的classpath运行,不需要额外配置模块依赖——Java 9会自动将系统模块java.json的类暴露给classpath上的代码,直接导入相关类就能用:
import javax.json.Json; import javax.json.JsonObject; // 其他需要的类
3. Socket程序中使用JSON的示例
下面是一个简单的Socket服务器示例,演示如何接收客户端发送的JSON数据并解析,同时生成JSON响应返回:
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.StringReader; import java.net.ServerSocket; import java.net.Socket; import javax.json.Json; import javax.json.JsonObject; import javax.json.JsonReader; public class JsonSocketServer { public static void main(String[] args) { try (ServerSocket serverSocket = new ServerSocket(8080)) { System.out.println("服务器启动,等待客户端连接..."); Socket clientSocket = serverSocket.accept(); System.out.println("客户端已连接"); // 读取客户端发送的JSON字符串 BufferedReader reader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); String jsonInput = reader.readLine(); // 解析JSON数据 try (JsonReader jsonReader = Json.createReader(new StringReader(jsonInput))) { JsonObject userJson = jsonReader.readObject(); System.out.println("客户端发送的用户名:" + userJson.getString("username")); System.out.println("客户端发送的年龄:" + userJson.getInt("age")); } // 生成JSON响应并发送给客户端 JsonObject response = Json.createObjectBuilder() .add("status", "success") .add("message", "JSON数据已成功解析") .build(); clientSocket.getOutputStream().write(response.toString().getBytes()); clientSocket.close(); } catch (IOException e) { e.printStackTrace(); } } }
小提示
JSON-P的核心类都在javax.json包下,常用的包括:
Json:工具类,用于创建JSON读取器、写入器、对象/数组构建器JsonObject:表示JSON对象JsonArray:表示JSON数组JsonReader/JsonWriter:用于读写JSON数据
内容的提问来源于stack exchange,提问作者parsa
相关产品推荐
相关产品推荐

