JSONPath: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
Line 40: Line 40:
====<tt>[&#39;''field''&#39;]</tt>====
====<tt>[&#39;''field''&#39;]</tt>====
This is an equivalent variant of the dot notation that can used to select the specified field of a parent Object. It requires quotes around the field name and it is useful when the field name contains special characters such as spaces, or they begin with a character other than A..Za..z_.
This is an equivalent variant of the dot notation that can used to select the specified field of a parent Object. It requires quotes around the field name and it is useful when the field name contains special characters such as spaces, or they begin with a character other than A..Za..z_.
<syntaxhighlight lang='json'>
['metadata']['resourceVersion']
</syntaxhighlight>


====<tt>[''0-based-index'']</tt>====
====<tt>[''0-based-index'']</tt>====


=JSONPath Template=
=JSONPath Template=

Revision as of 00:31, 16 March 2021

External

Internal

Overview

JSONPath is a query language for JSON similar to XPath for XML. Some documentation describes it as a Java DSL for reading JSON documents, probably to address those cases where the implementation is made in Java.

JSONPath Expression

A JSONPath expression specifies a path to an element or a set of elements that are part of a JSON document.

.spec.containers[0].name

An expression can be assembled using a series of syntax elements presented below.

$

$ represents the top-level element (or root) of the JSON document. The "$" is optional, the following are equivalent:

$.metadata
.metadata

Some JSONPath documentation mentions that even the leading dot can be omitted, but that may break some tools, as it is the case with kubectl JSONPath support.

Element Selection

There are two ways to select a specific child element relative to the parent element: .field (or its variant ['field']) and [0-based-index]. These two different syntaxes are applied to JSON Objects and Arrays, given the fact that JSON has only these two types of collections.

.field

This is called "the dot notation". The expression selects the specified field in the parent JSON Object.

.metadata.resourceVersion

['field']

This is an equivalent variant of the dot notation that can used to select the specified field of a parent Object. It requires quotes around the field name and it is useful when the field name contains special characters such as spaces, or they begin with a character other than A..Za..z_.

['metadata']['resourceVersion']

[0-based-index]

JSONPath Template