You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:52:46