JsonPath
https://www.pluralsight.com/blog/tutorials/introduction-to-jsonpath
https://github.com/json-path/JsonPath
https://support.smartbear.com/alertsite/docs/monitors/api/endpoint/jsonpath.html
JSONPath is a query language for JSON, similar to XPath for XML
1. Maven dependency
<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path</artifactId>
<version>2.1.0</version>
</dependency>
2. Functions and Filters
JsonPath also has functions that can be used to the end of a path to synthesize that path's output expressions: min(), max(), avg(), stddev(), length().
Finally - we have filters; these are boolean expressions to restrict returned lists of nodes to only those that calling methods need.
A few examples are equality (==), regular expression matching(=~), inclusion(in), check for emptiness(empty),. Filters are mainly used for predicates.
For a full list and detailed explanations of different operates, functions and filters, please refer to JsonPath GitHub project.
3 examples: JsonPath.with()
@Then("^These two item's quantity are reset by weight and default$")
public void oneWeightOneDefaultItem() throws Throwable{
logger.info("\n" + "***Reset the quantity based on weight and default tareWeight");
try{
expectedResponseBody = ResponseHandler.prepareTareWeightAndDefaultResponse();
float expectQuantity0 = JsonPath.with(expectedResponseBody).get("items[0].quantity");
float actualQuantity0 = JsonPath.with(actualResponseBody).get("items[0].quantity");
float expectQuantity1 = JsonPath.with(expectedResponseBody).get("items[1].quantity");
float actualQuantity1 = JsonPath.with(actualResponseBody).get("items[1].quantity");
boolean a = expectQuantity0==actualQuantity0;
boolean b = expectQuantity1==actualQuantity1;
Assert.assertTrue(a&b);
}catch(Exception e){
e.printStackTrace();
}
}
4. examples: read:
@Test
public void givenStarring_whenRequestingMovieTitle_thenSucceed() {
List<Map<String, Object>> dataList = JsonPath.parse(jsonString)
.read("$[?('Eva Green' in @['starring'])]");
String title = (String) dataList.get(0).get("title");
assertEquals("Casino Royale", title);
}
Last updated
Was this helpful?