{
"automobiles": [
{ "maker": "Nissan", "model": "Teana", "year": 2011 },
{ "maker": "Honda", "model": "Jazz", "year": 2010 },
{ "maker": "Honda", "model": "Civic", "year": 2007 },
{ "maker": "Toyota", "model": "Yaris", "year": 2008 },
{ "maker": "Honda", "model": "Accord", "year": 2011 }
],
"motorcycles": [{ "maker": "Honda", "model": "ST1300", "year": 2012 }]
}
.automobiles{.maker === "Honda" && .year > 2009}.model["Jazz", "Accord"]
{ и }).1.23)"John Gold")true и false)null (null).nestedProp.deeplyNestedProp).prop{.nestedProp{.deeplyNestedProp{.stillMore || .yetAnother} || .otherDeeplyNested}})==true, если оба операнда равны.books{.id == "1"}===true, если оба операнда строго равны без преобразования типов.books{.id === 1}!=true, если операнды не равны.books{.id != "1"}!==true, если операнды не равны и/или не одного типа данных.books{.id !== 1}>true, если левый операнд больше правого.books{.id > 1}>=true, если левый операнд больше или равен правому.books{.id >= 1}<true, если левый операнд меньше правого.books{.id < 1}<=true, если левый операнд меньше или равен правому.books{.id <= 1}==true, если обе строки равны.books{.title == "clean code"}^==true, если левый операнд начинается с правого.books{.title ^== "Javascript"}^=true, если левый операнд начинается с правого.books{.title ^= "javascript"}==^true, если правый операнд начинается с левого.books{.title ==^ "Javascript"}=^true, если правый операнд начинается с левого.books{.title =^ "javascript"}$==true, если левый операнд заканчивается правым.books{.title $== "Javascript"}$=true, если левый операнд заканчивается правым.books{.title $= "javascript"}==$true, если правый операнд заканчивается левым.books{.title ==$ "Javascript"}=$true, если правый операнд заканчивается левым.books{.title =$ "javascript"}*==true, если левый операнд содержит правый.books{.title *== "Javascript"}*=true, если левый операнд содержит правый.books{.title *= "javascript"}==*true, если правый операнд содержит левый.books{.title ==* "Javascript"}=*true, если правый операнд содержит левый.books{.title =* "javascript"}&&true, если оба операнда true.books{.price > 19 && .author.name === "Robert C. Martin"}||true, если один или оба операнда true.books{.title === "Maintainable JavaScript" || .title === "Clean Code"}!true, если операнд ложный.books{!.title}0, результат будет true, иначе false!!)+-*/%!, унарный -*, /, %+, бинарный -<, <=, >, >===, ===, !=, !==, ^=, ^==, $==, $=, *=, *==, =^, ==^, =$, ==$, =*, ==*&&||( и )) используются для явного обозначения приоритета путем группировки частей выражения, которые должны быть вычислены первыми.// найти все названия книг, автором которых является Robert C. Martin
'.books{.author.name === "Robert C. Martin"}.title';
/* ['Clean Code', 'Agile Software Development'] */
// найти все названия книг с ценой меньше 17
".books{.price < 17}.title";
/* ['Maintainable JavaScript', 'JavaScript: The Good Parts'] */
[ и ]).[index]index – первый элемент имеет индекс 0, позиционные предикаты начинаются с нуля[3] возвращает четвертый элемент в контексте[start:]start[2:] возвращает элементы, индекс которых больше или равен 2[:end]end[:5] возвращает элементы с индексами от 0 до 4[start:end]start и меньше end[2:5] возвращает элементы с индексами 2, 3 и 4index, start или end могут быть отрицательными числами, что означает, что JSPATH считает с конца, а не с начала:[-1][-3:].books[0].title.books.title[0].books[-1].title.books[:2].title.books[-2:].title.books[1:3].title.books{.price < 15}{.price > 5}[0].title.books{.price < 20 && (.author.name *== "Zakas" || .author.name *== "Martin")}.title.books{.price < 20 && .author{.name *== "Zakas" || .name *== "Martin"}}.title