Я создаю набор тестов для тестирования моего Vert.x API, который реализует несколько алгоритмов сортировки.Один из тестовых примеров, который я хотел бы охватить, заключается в обработке нулевых или пустых значений в несортированном массиве:
Тело запроса представляет собой строку JSON, которую я создаю следующим образом:
final String json = "{\"arr\": [99, [2, 4, ], [[55]], 0]}";
В настоящее время я анализирую JSON в обработчике запросов, используя Vert.x JsonObject и JsonArray.
import io.vertx.core.json.JsonObject;
import io.vertx.core.json.JsonArray;
private void doBubbleSort(RoutingContext routingContext) {
JsonObject json = routingContext.getBodyAsJson();
JsonArray jsonArray = json.getJsonArray("arr");
....
}
Это ошибка, которую я получаю
SEVERE: Unexpected exception in route
io.vertx.core.json.DecodeException: Failed to decode:Unexpected character (',' (code 44)): expected a value
at [Source: (io.netty.buffer.ByteBufInputStream); line: 1, column: 49]
at io.vertx.core.json.Json.decodeValue(Json.java:172)
at io.vertx.core.json.JsonObject.fromBuffer(JsonObject.java:960)
at io.vertx.core.json.JsonObject.<init>(JsonObject.java:73)
at io.vertx.ext.web.impl.RoutingContextImpl.getBodyAsJson(RoutingContextImpl.java:263)
at io.vertx.ext.web.impl.RoutingContextDecorator.getBodyAsJson(RoutingContextDecorator.java:123)
at za.co.offerzen.SortVerticle.doBubbleSort(SortVerticle.java:80)
at io.vertx.ext.web.impl.BlockingHandlerDecorator.lambda$handle$0(BlockingHandlerDecorator.java:48)
at io.vertx.core.impl.ContextImpl.lambda$executeBlocking$2(ContextImpl.java:272)
at io.vertx.core.impl.TaskQueue.run(TaskQueue.java:76)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.lang.Thread.run(Thread.java:748)
Как я могу проанализировать запрос, если в json есть пустое значение?В идеале мне нужны только все значения int
из тела запроса и игнорирование или удаление пустых, нулевых или отсутствующих значений.Нужно ли перебирать тело запроса перед его разбором в json и проверять, каждое ли значение instanceof int
?Или есть другой способ?
Помимо JsonObject
и JsonArray
, я могу получить тело запроса в виде Buffer
или String
Спасибо.