Selecting conditional data
You can use DronaHQ Query Language (DQL) to filter for specific data in your responses. Multiple responses return in an array. Single responses return as a single record. Sample data and DQL examples are below.
Contents
- Example JSON
- Filter query results for objects with specific key-value pairs
- Navigate your filtered results
- Return a single record
- Check if a field has a specific value
- Get only unique payment amounts
Example JSON
The examples below use this JSON data:
{
"customer info": {
"customer field": "Customer data",
"unformated_customer_field": " customer \n stuff ",
"total_value": "281.01",
"associated_usernames": ["user1, myuser, online_user"]
},
"payments": [
{
"invoice_number": "101301",
"date": "2022-09-11T16:12:34.494Z",
"description": "recurring subscription",
"amount": 110.48
},
{
"invoice_number": "101302",
"date": "2022-09-29T14:45:13.148Z",
"description": "one time purchase",
"amount": 24.49
},
{
"invoice_number": "101303",
"date": "2022-10-11T16:12:34.683Z",
"description": "recurring subscription",
"amount": 110.48
},
{
"invoice_number": "101304",
"date": "2022-10-12T11:45:22.182Z",
"description": "recurring subscription deluxe",
"amount": 35.56
}
]
}
Filter query results for objects with specific key-value pairs
The example below filters for objects in the payments array that have the key-value pair "description": "recurring subscription".
DQL
payments[description="recurring subscription"]
Result
[
{
"invoice_number": "101301",
"date": "2022-09-11T16:12:34.494Z",
"description": "recurring subscription",
"amount": 110.48
},
{
"invoice_number": "101303",
"date": "2022-10-11T16:12:34.683Z",
"description": "recurring subscription",
"amount": 110.48
}
]
Navigate your filtered results
DQL uses the same syntax to navigate filtered query results as it does to navigate JSON data. The example below gets the values from the invoice.number fields in the payments array.
DQL
payments[description="recurring subscription"].invoice_number
Result
["101301","101303"]
Return a single record
When a filter has a single result, it returns as a record instead of an array. The filter below returns a single result as a record.
DQL
payments[description="recurring subscription deluxe"].invoice_number
Result
["101304"]
Check if a field has a specific value
DQL can check if your query results have a specific key-value pair and return true or false. The example below checks the first item in the payments array for the key-value pair "description": "recurring".
DQL
$contains(payments[0].description, "recurring")
Result
true
Get only unique payment amounts
The $distinct function returns a single instance of any recurring values. In the example below, the 110.48 value appears twice in the data, but only once in the result.
DQL
$distinct(payments.amount)
Result
[110.48, 24.49, 35.56]