Thursday, September 14, 2023
HomeJavaJust how to Examine if a Worth Exists in a JSON Range...

Just how to Examine if a Worth Exists in a JSON Range for a Certain Trick


1. Summary

In this tutorial, we’ll find out exactly how to evaluate a JSON variety and also validate whether a certain secret exists and also if it has a certain worth. We’ll utilize 2 of one of the most preferred Java collections for refining JSON: Jackson and also Gson

2. Configuration

Initially, allow’s develop a JSON variety We’ll maintain it easy and also have a selection of items with a solitary key/value set each:

 String exampleJson="[{"color":"red"},{"color":"blue"},{"color":"green"}]";

So, each item in the variety has the very same residential or commercial property shade and also a various worth. For our instances, we’ll inspect if, for the secret shade, the worth environment-friendly exists.

3. Making Use Of Jackson

To utilize Jackson in our job, we’ll require to import it right into our pom.xml:

<< reliance>>.
<< groupId>> com.fasterxml.jackson.core<.
<< artifactId>> jackson-databind<.
<< variation>> 2.15.2<.
<

The most up to date variation is offered in the Wizard Database

Allow's currently utilize that to fix our trouble:

 @Test.
void givenJsonArray_whenUsingJackson_thenDetectKeyInArray() tosses JsonProcessingException {
ObjectMapper objectMapper = brand-new ObjectMapper();
JsonNode tree = objectMapper.readTree( exampleJson);

Stream<< JsonNode> > s = StreamSupport.stream( tree.spliterator(), incorrect);
boolean outcome = s.map( entrance -> > entry.get(" shade"))
. filter( Items:: nonNull)
. anyMatch( shade -> > "environment-friendly". equates to( color.asText()));
assertTrue( outcome);.
} 

Our very first objective is to analyze the JSON. For this, we have actually utilized ObjectMapper We utilized the readTree() approach to transform our JSON String right into a JsonNode

Adhering To that, we transformed our JsonNode right into a Stream We did this utilizing the StreamSupport course, which includes a collection of energies for developing and also collaborating with Stream s. The details energy we utilized below is the stream() approach, which takes a Spliterator and also a boolean flag. The flag enables us to select in between a consecutive and also identical Stream

Afterwards, with our Stream all set, we evaluated each JsonNode consequently. We required to be somewhat mindful below. We have no verification that our input JSON has actually any kind of tricks called shade This might lead to a NullPointerException when transforming the worth to a String for contrast.

So initially, we tried to obtain the residential or commercial property, after that filteringed system to eliminate any kind of void s that would certainly happen if the JsonNode had actually no tricks called shade. Once we were positive we had our worth, we might call anyMatch() We offered it a predicate contrasting each worth versus our selected shade environment-friendly.

The anyMatch() approach returns real if there is a suit. Consequently, our assertion at the end of our examination reveals that there was a worth that equated to environment-friendly for the chosen secret shade

4. Making Use Of Gson

Following, we'll take an extremely comparable technique utilizing the Gson collection To utilize Gson in our job we'll require to import it right into our pom.xml:

<< reliance>>.
<< groupId>> com.google.code.gson<.
<< artifactId>> gson<.
<< variation>> 2.10.1<.
<

The most up to date variation is offered in the Wizard Database

We'll use the very same strategy below of analyzing our JSON String, transforming it right into a Stream, and also utilizing anyMatch() to try to find our worth:

 @Test.
void givenJsonArray_whenUsingGson_thenDetectKeyInArray() {
Gson gson = brand-new Gson();.
JsonArray analyzed = gson.fromJson( exampleJson, JsonArray.class);.

Stream<< JsonElement> > s = StreamSupport.stream( parsed.spliterator(), incorrect);.
boolean outcome = s.map( entrance -> > entry.getAsJsonObject()
. obtain(" shade"))
. filter( Items:: nonNull)
. anyMatch( shade -> > "environment-friendly". equates to( color.getAsString()));.
assertTrue( outcome);.
} 

First of all, we analyzed our String with the fromJson() approach, which offered us a JsonArray We obtained the JsonArray kind many thanks to the 2nd debate, where we might define the course we intended to analyze the JSON right into.

Complying with that action, the remainder needs to look acquainted. We utilized the StreamSupport energies as before to generate a Stream of JsonElement s. The only various other variant is that we required to call getAsJsonObject() on our JsonElement This permitted us to obtain the worth connected with the shade residential or commercial property and also contrast it to our String

As can be seen once again below, the suit is effectively located in the Stream Significantly, we took the very same safety measures as prior to versus the possibility NullPointerException from having actually no residential or commercial properties called shade in the JSON. If we might have much more assurance concerning which residential or commercial properties would certainly be offered, we might avoid straight to the anyMatch() action.

5. Final Thought

In this short article, we saw that we can utilize both Jackson and also Gson to inspect if a worth exists for a chosen residential or commercial property in a JSON variety. Both applications were comparable. They eventually carried out the strategy of analyzing the JSON, transforming it to a Stream, and after that lastly utilizing the Stream energies to look for a suit. As soon as we had the Stream, we might have utilized any kind of variety of contrast approaches to review the entrances in the ranges making this a functional option.

As constantly, the complete code for the instances is offered over on GitHub

RELATED ARTICLES

Most Popular

Recent Comments