当前位置: 首页 > 知识库问答 >
问题:

维特。x、 RoutingContext无法接收json数组

柯子琪
2023-03-14


我在接收json数组时遇到问题

发送JSON是:

[
     {
        "name": "Account 3",
        "type": 2,
        "active": true
     },
     {
         "name": "Account 4",
         "type": 1,
         "active": true
     },
     {
         "name": "Account 5",
         "type": 0,
         "active": true
     }
]


错误是:

Mar 31, 2018 6:28:37 PM io.vertx.ext.web.impl.RoutingContextImplBase
SEVERE: Unexpected exception in route
io.vertx.core.json.DecodeException: Failed to decode: Cannot deserialize instance of `java.util.LinkedHashMap` out of START_ARRAY token

租户安全等级:

class TenantSwitcherHandler(val vertx: Vertx) {
fun switchTenant(routingContext: RoutingContext) {
    val tenantId: String? = routingContext.request().headers().get(CommonConstants.HEADER_TENANT)
    if (tenantId.isNullOrEmpty()) {
        routingContext.response().setStatusCode(HttpResponseStatus.UNAUTHORIZED.code()).end(ErrorMessages.CANT_FIND_X_TENANT_ID_HEADER.value())
        return
    } else {
        vertx.eventBus().send(CommonConstants.SWITCH_TENANT, tenantId)
        routingContext.next()
    }
}
}

执行routingContext时出错。下一个()。。。我怎样才能解决这个问题?

注意:TenantsSwitcherHandler类注册为安全处理程序,它根据X-TENANT-ID头值切换指向数据库的指针

共有1个答案

郎祯
2023-03-14

这个问题实际上与你发布的代码无关,而是与你的下一条路线有关
您发送的数组不是有效的JSON对象
您可以:

  1. 从您的客户端打包发送:{“array”:[…]}

这里有一些你可以玩的代码:最终Vertx vertx=Vertx.vertx();

    Router router = Router.router(vertx);
    router.route().handler(BodyHandler.create());
    router.post("/").handler(c -> {
            JsonObject json = c.getBodyAsJson();
            // If you want to read JSON array, use this
            // JsonArray jsonArray = c.getBodyAsJsonArray();

            c.response().end(json.toString());
        }
    );
    vertx.createHttpServer().requestHandler(router::accept).listen(8443);


    System.out.println("Server started");
    WebClient client = WebClient.create(vertx);

    // This will succeed
    client.request(HttpMethod.POST, 8443, "localhost", "/").
            sendBuffer(Buffer.buffer("{}"), h -> {
                System.out.println(h.result().bodyAsString());
            });

    // This will fail
    client.request(HttpMethod.POST, 8443, "localhost", "/").
            sendBuffer(Buffer.buffer("[]"), h -> {
                System.out.println(h.result().bodyAsString());
    });

 类似资料:
  • 我用vert设置了JDBCAuth。x、 身份验证工作正常。我在jdbauth之后得到用户对象。身份验证(adminLoginHandler),但在下一个HTTP GET查询(adminReadHandler)的RoutingContext中为空。 我检查了,RoutingContext有会话和cookie对象。 我添加BodyHandler、CookieHandler、SessionHandle

  • 有人知道如何将json字符串解码为

  • 我有一个Angular 4和Java/Spring MVC/Jhipster网站,我正试图使用本教程创建一个websocket(使用sock js和stomp.js)。我可以连接到websocket,但是当我尝试从Java代码向客户端发送数据时,什么也没有发生。请帮帮我。 下面,我只是试图访问我的浏览器中的http://localhost:9001/api/websocket/testSend,并

  • 我不知道是网络配置还是我的软件出了问题。 这是监听代码: 奇怪的是,在wireshark上,我可以看到:数据包已从发送到,并且设备已对此数据包作出响应--来自的数据包已发送到。使用bind(0.0.0.0,端口)似乎不能涵盖。我迷路了,一点主意都没有。 ifconfig为:

  • 调试此代码时,应用程序停止。未显示任何错误消息或异常。 项目X: 下面我将通过REST API发布JSON对象。 项目Y: 有办法找到尸体吗?

  • 假设我有这个中间件类: ctx。set()方法是虚构的,它在3.6.2版上不存在。那么,我们如何在请求的上下文中设置任意信息呢?