-2

我正在使用 vertx 路由器编写 api,我需要我的 api 来返回 json 对象的列表,这可能吗?提前致谢

4

1 回答 1

0

是的,这是可能的,这是一个带有 vert.x json 抽象的完整示例:

import io.vertx.core.Vertx;
import io.vertx.core.json.JsonArray;
import io.vertx.core.json.JsonObject;
import io.vertx.ext.web.Router;

public class Main {
  public static void main(String[] args) {
    Vertx vertx = Vertx.vertx();
    Router router = Router.router(vertx);
    
    router.get("/foo")
        .handler(ctx -> {
          JsonArray jsonArray = new JsonArray();
          jsonArray.add(new JsonObject());
          jsonArray.add(new JsonObject());
          
          ctx.response()
            .setChunked(true)
            .setStatusCode(200)
            .end(jsonArray.toBuffer());
        });
    
    vertx
      .createHttpServer()
      .requestHandler(router)
      .listen(8080);
  }
}

如果您想使用自己的库进行 json 操作 + pojos,则可以在结束请求时使用字符串。例如杰克逊:

router.get("/foo")
    .handler(ctx -> {
      List<MyObject> myObjectList = new ArrayList<>();
      ObjectMapper objectMapper = new ObjectMapper();

      String myObjectListJsonStr = objectMapper.writeValueAsString(myObjectList);

      ctx.response()
        .setChunked(true)
        .setStatusCode(200)
        .end(myObjectListJsonStr);
    });
于 2021-09-26T05:49:04.307 回答