JSON path - Cloud

Talend Cloud API Tester User Guide

Version
Cloud
Language
English (United States)
Product
Talend Cloud
Module
Talend API Tester
Content
Design and Development > Testing APIs
This section describes JSON path expressions that you can use with Talend Cloud API Tester.

For more information, see JSONPath - XPath for JSON.

You can also find an online JSON Path evaluator here. The underlying implementation may differ from the one used in Talend Cloud API Tester, so the results may differ.

Here are a few hints to help you use JSON payloads:

  • The dollar sign $ identifies the root object of the JSON content.
  • The dot sign . allows you to get attributes of an object or to go deeper in the tree.
  • The square brackets [] target arrays and allow the selection of a particular element in them, or a slice of them.
  • The double dot .. allows you to gather recursively all the attributes based on their name.

As you will see below, the current implementation in Talend Cloud API Tester mostly follows the reference, but differs on few points.

Sample JSON path expressions

This section lists expressions and their result against the following sample JSON file:

{
  "store": {
    "book": [
        {
          "category": "reference",
          "author": "Nigel Rees",
          "title": "Sayings of the Century",
          "price": 8.95
        },
        {
          "category": "fiction",
          "author": "Evelyn Waugh",
          "title": "Sword of Honour",
          "price": 12.99
        },
        {
          "category": "fiction",
          "author": "Herman Melville",
          "title": "Moby Dick",
          "isbn": "0-553-21311-3",
          "price": 8.99
        },
        {
          "category": "fiction",
          "author": "J. R. R. Tolkien",
          "title": "The Lord of the Rings",
          "isbn": "0-395-19395-8",
          "price": 22.99
        }
      ],
      "bicycle": {
        "color": "red",
        "price": 19.95
    }
  }
}

The table below shows some sample expressions and their result.

Expression Value
$.store.bicycle.color The value of the color attribute of bicycle (i.e. "red")
$.store.book[0] The first "book" node in "store"

$.store.book[1:3]

$.store.book[1,2]

An array of the second and third "book" nodes in "store"
$.store.book[-1:] An array containing the last "book" node in "store"
$.store.book[:2] An array of the first and second "book" nodes in "store"
$.store.book[1:4:2].author An array of the authors of the second and forth "book" nodes in "store" (i.e.: ["Evelyn Waugh","J. R. R. Tolkien"])
$.store.book[1].* An array of the values of all attributes of the second book (i.e. ["fiction","Evelyn Waugh","Sword of Honour",12.99])
$.store..price An array of the values of all attributes "price" of the "store" node (i.e. the prices of books and bicycle [8.95,12.99,8.99,22.99,19.95])
$.store.book.author An array of the values of all attributes "author" of the "book" node (i.e. ["Nigel Rees","Evelyn Waugh","Herman Melville","J. R. R. Tolkien"])
$.store.book[?(@.isbn)] An array of the books that has an attribute "isbn" (i.e. the two last books)
$.store.book[?(@.price<10)] An array of the books which price is less than "10"
$.. An array of all child nodes of the root node, recursively
$..category An array of all values of the "category" nodes (i.e. ["reference","fiction","fiction","fiction"])
$..category[(@.length-1)] The value of the last "category" node

When Talend Cloud API Tester differs from the reference

The star operator

Expression Reference Talend Cloud API Tester
$.store.book[*].author An array containing the authors of all books in the store Return empty array, use $.store.book.author instead

The double dot operator

The expression $..book is interpreted as an array of all book nodes so it returns an array containing an array, since book node is an array:

[
  [
          { "category": "reference", "author": "Nigel Rees", "title": "Sayings of the Century", "price": 8.95 },
          { "category": "fiction", "author": "Evelyn Waugh", "title": "Sword of Honour", "price": 12.99 },
          { "category": "fiction", "author": "Herman Melville", "title": "Moby Dick", "isbn": "0-553-21311-3", "price": 8.99 },
          { "category": "fiction", "author": "J. R. R. Tolkien", "title": "The Lord of the Rings", "isbn": "0-395-19395-8", "price": 22.99 }
  ]
]

Then the following expressions are computed differently :

Expression Reference Talend Cloud API Tester
$..book[0] An array containing the first book node The first element of the array, that is to say the array containing all books.
$..book[-1:] An array containing the last book Not supported as is, it works using ($..book[0][-1:])
$..book[(@.length-1)] An array containing the last book Not supported as is, it works using ($..book[0][(@.length-1)])
$..book[0,1] An array containing the first and second book Not supported as is, it works using ($..book[0][0,1])
$..book[:2] An array containing the third book Not supported as is, it works using ($..book[0][:2])