To analyse an unknown Json API I setup a small project with Smallrye Rest Client to access the Json structure. I added JUnit for a test driven approach and Hamcrest for Matchers (like assertThat or is).
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>deringo</groupId> <artifactId>testproject</artifactId> <version>1.0-SNAPSHOT</version> <name>testproject</name> <description></description> <properties> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> </properties> <dependencies> <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api --> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> <version>5.7.0</version> <scope>test</scope> </dependency> <!-- https://mvnrepository.com/artifact/org.hamcrest/hamcrest --> <dependency> <groupId>org.hamcrest</groupId> <artifactId>hamcrest</artifactId> <version>2.2</version> <scope>test</scope> </dependency> <!-- https://mvnrepository.com/artifact/io.smallrye/smallrye-rest-client --> <dependency> <groupId>io.smallrye</groupId> <artifactId>smallrye-rest-client</artifactId> <version>1.2.2</version> </dependency> </dependencies> </project>
package deringo.testproject;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import javax.json.JsonArray;
import javax.json.JsonObject;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.junit.jupiter.api.Test;
public class TestJson {
@Test
public void testClientBuilderWorking() {
Client client = ClientBuilder.newClient();
WebTarget target = client.target("https://www.intensivregister.de/api/public/intensivregister");
Response response = target.request(MediaType.APPLICATION_JSON).get();
assertThat(response.getStatus(), is(200));
JsonObject jo = response.readEntity(JsonObject.class);
int rowCount = jo.getJsonNumber("rowCount").intValue();
JsonArray ja = jo.getJsonArray("data");
assertThat(ja.size(), is(rowCount));
assertNotNull(ja.get(0).asJsonObject().getJsonObject("krankenhausStandort").getString("id"));
ja.forEach(value ->
assertThat(
value.asJsonObject().getString("id"),
is(value.asJsonObject().getJsonObject("krankenhausStandort").getString("id"))
));
}
}