diff --git a/adapter-http/pom.xml b/adapter-http/pom.xml index 683d05f5f..2fb737a59 100644 --- a/adapter-http/pom.xml +++ b/adapter-http/pom.xml @@ -42,10 +42,9 @@ compile - com.fasterxml.jackson.core - jackson-core - 2.15.2 - compile + com.google.code.gson + gson + 2.10.1 diff --git a/adapter-http/src/main/java/io/nosqlbench/adapter/http/core/HttpOp.java b/adapter-http/src/main/java/io/nosqlbench/adapter/http/core/HttpOp.java index f627f8c0b..099975e09 100644 --- a/adapter-http/src/main/java/io/nosqlbench/adapter/http/core/HttpOp.java +++ b/adapter-http/src/main/java/io/nosqlbench/adapter/http/core/HttpOp.java @@ -16,15 +16,16 @@ package io.nosqlbench.adapter.http.core; -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import io.nosqlbench.adapter.http.errors.InvalidResponseBodyException; import io.nosqlbench.adapter.http.errors.InvalidStatusCodeException; import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp; import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.RunnableOp; import org.apache.logging.log4j.core.tools.picocli.CommandLine; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + import java.net.http.HttpClient; import java.net.http.HttpRequest; @@ -95,25 +96,24 @@ public class HttpOp implements CycleOp { } } try { - ObjectMapper mapper = new ObjectMapper(); - JsonNode json = mapper.readTree(response.body()); + JsonParser parser = new JsonParser(); + JsonObject json = parser.parse(response.body()).getAsJsonObject(); - if (json.get("hits") == null) { - return null; + if (!json.has("hits") || !json.getAsJsonObject("hits").has("hits")) { + return null; } - Iterable hits = json.get("hits").get("hits"); - - // get length from hits iterator - int count = (int)StreamSupport.stream(Spliterators.spliteratorUnknownSize(hits.iterator(), 0), false).count(); + JsonArray hits = json.getAsJsonObject("hits").getAsJsonArray("hits"); + int count = hits.size(); int[] keys = new int[count]; - int i=0; - for (JsonNode hit : hits) { - keys[i]= hit.get("_source").get("key").asInt(); + int i = 0; + for (JsonElement element : hits) { + JsonObject hit = element.getAsJsonObject(); + keys[i] = hit.getAsJsonObject("_source").get("key").getAsInt(); i++; } return keys; - } catch (JsonProcessingException e) { + } catch (Exception e) { throw new RuntimeException(e); }