Skip to Content

Field Access

Expressions reference fields from your JSON data using several access patterns. The available data depends on the context β€” in Tabular Operations each row is the scope, in Find & Replace the old variable holds the current value.

Simple field names

Use the field name directly as an identifier:

{{name}} β†’ value of the "name" field {{age}} β†’ value of the "age" field {{isActive}} β†’ value of the "isActive" field

Given:

{ "name": "Alice", "age": 25, "isActive": true }
ExpressionResult
{{name}}"Alice"
{{age}}25
{{isActive}}true

Nested field access (dot notation)

Use dots to access nested properties:

{{address.city}} β†’ value of city inside address {{user.profile.avatar}} β†’ deeply nested access

Given:

{ "user": { "profile": { "name": "Alice", "avatar": "alice.png" } } }
ExpressionResult
{{user.profile.name}}"Alice"
{{user.profile.avatar}}"alice.png"

If any part of the chain is null or undefined, the expression returns undefined safely (no error thrown). For example, {{user.address.zip}} returns undefined if address doesn’t exist.

Quoted string keys

For field names that contain special characters (spaces, dots, hyphens), use quoted strings:

{{"first-name"}} β†’ value of the "first-name" field {{"my field"}} β†’ value of the "my field" field {{"data.2024"}} β†’ value of the "data.2024" field (literal key, not nested)

Given:

{ "first-name": "Alice", "my field": 42, "data.2024": "report" }
ExpressionResult
{{"first-name"}}"Alice"
{{"my field"}}42
{{"data.2024"}}"report"

A quoted string at the root level first checks if it matches a field name in the data. If the field exists, it returns the field value. If not, it returns the literal string.

Quoted key + property access

Combine quoted keys with dot notation for nested access under special-character keys:

{{"user-data".name}} β†’ access "name" inside "user-data" {{"my.config".timeout}} β†’ access "timeout" inside "my.config"

Given:

{ "user-data": { "name": "Alice", "role": "admin" } }
ExpressionResult
{{"user-data".name}}"Alice"
{{"user-data".role}}"admin"

Reserved identifiers

Some identifiers resolve to built-in objects or functions instead of data fields:

IdentifierResolves to
MathMath functions (abs, ceil, floor, etc.)
DateDate functions (now, parse, format)
stringifyJSON.stringify utility
toStringString conversion utility
keysObject.keys utility
valuesObject.values utility
oldCurrent value in Find & Replace context

If your data has a field named Math, Date, stringify, toString, keys, values, or old, the expression will resolve to the built-in instead of your data field. Avoid using these as field names in data you plan to use with expressions.

What is NOT supported

Computed property access

Bracket notation for dynamic property access is not allowed:

{{obj[key]}} ← ERROR: Computed access not allowed {{arr[0]}} ← ERROR: Computed access not allowed {{data["field"]}} ← ERROR: Computed access not allowed

Use dot notation or quoted string keys instead.

Exception: Array indexing works when it’s the result of a method call. For example, {{old.split(",")[0]}} works because split returns an array and [0] is evaluated naturally by the JavaScript engine on the returned value.

Forbidden properties

Accessing __proto__, prototype, or constructor on any object throws an error:

{{obj.__proto__}} ← ERROR: Forbidden property {{obj.constructor}} ← ERROR: Forbidden property
Last updated on