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

如何使用Vert.x RoutingContext返回JSON数组

结论

该需求完全可以实现,Vert.x 原生提供了JSON序列化能力和Router响应输出能力,无需引入额外第三方依赖即可完成开发。

核心实现步骤
  • 先组装要返回的JSON列表:可直接使用Vert.x内置的JsonArray承载多个JsonObject,也可以直接传入POJO集合自动序列化
  • 配置响应头的Content-Type为application/json,避免返回乱码
  • 将JsonArray序列化后写入HTTP响应即可
代码示例
import io.vertx.core.AbstractVerticle;
import io.vertx.core.http.HttpHeaders;
import io.vertx.core.json.JsonArray;
import io.vertx.core.json.JsonObject;
import io.vertx.ext.web.Router;

public class JsonListApiVerticle extends AbstractVerticle {
    @Override
    public void start() {
        Router router = Router.router(vertx);
        
        // 示例接口:返回商品列表
        router.get("/api/goods/list").handler(routingContext -> {
            // 方式1:手动构造JSON对象列表
            JsonArray goodsList = new JsonArray()
                    .add(new JsonObject().put("id", 1001).put("name", "无线耳机").put("stock", 32))
                    .add(new JsonObject().put("id", 1002).put("name", "机械键盘").put("stock", 18))
                    .add(new JsonObject().put("id", 1003).put("name", "便携显示器").put("stock", 9));
            
            // 方式2:直接传入POJO集合自动序列化(可选)
            // List<GoodsPO> poList = goodsMapper.selectList();
            // JsonArray goodsList = new JsonArray(poList);
            
            // 输出响应
            routingContext.response()
                    .putHeader(HttpHeaders.CONTENT_TYPE, "application/json; charset=utf-8")
                    .end(goodsList.encode());
        });
        
        // 启动HTTP服务监听8080端口
        vertx.createHttpServer()
                .requestHandler(router)
                .listen(8080);
    }
}
注意事项
  • 如果使用POJO序列化,确保POJO类提供了公共的getter方法、无参构造函数,否则Vert.x无法完成自动序列化
  • 返回大体积JSON列表时,可搭配routingContext.response().setChunked(true)分块输出,避免内存占用过高

内容的提问来源于stack exchange,提问作者Tung Thanh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 00:57:03