XQuery 3.1 expressions for JSON
Since JSON data structures commonly use objects and arrays, it is the XQuery 3.1 lookup operator ? that is used to locate nodes inside JSON objects (which are essentially maps from an XQuery perspective) and JSON arrays. This way of locating a node is different than how path expressions are written to locate nodes in XML documents. In these, the slash operator / is used to connect steps in a path expression (for example: items/*). In XQuery expressions for JSON, the slash operator is not used for locating nodes.
Examples of XQuery expressions for JSON
Read this to mean: Lookup the child node items and then lookup all its children nodes. Note that items is expected to be a child node of the context node.
Read this to mean: Lookup the child node Artists and then lookup its first child node. Inside that node, lookup the child node Albums and then lookup its second child node. Now return the Name node of that second child node.
Read this to mean: Lookup the child node Tracks and then lookup all its children. While looking up the children, lookup each child's Writer node children, and select only those that contain the string 'Brian'. Notice that there are three lookup operators in this expression. Each is used in a new step, where a nodeset must be looked up.
Read this to mean: Inside the root object, lookup the child node Artists and then lookup all its children that have Name node with a value of "Queen". Inside these nodes, lookup all the child Albums nodes, and then their children. Inside these children, lookup (and return) the respective Name nodes. In the screenshot below, this expression is shown in the XPath/XQuery Window together with the JSON Grid View representation of the target JSON document.