Nested JSON fields
Turn details inside structured JSON data into readable table columns, without reshaping the source file first.
COLUMNS
Some imports keep related information together inside one block of data. That is a normal way to organize data; you do not need to write code to use it.
Simple Tables detects these details when it imports the data. You can choose the fields later and give them a clear column heading.
What “nested” means
Rather than storing every detail side by side, a record can keep customer details in their own group. A path such as user.name tells Simple Tables: open user, then use name from inside it.
Show a detail from inside a group
In this example, user and order are groups. The paths below them point to the individual values you can show as columns.
[
{
"user": { "name": "Alice", "email": "alice@example.com" },
"order": { "id": 123, "total": 99.99 }
},
{
"user": { "name": "Bob", "email": "bob@example.com" },
"order": { "id": 124, "total": 149.5 }
}
]| Path | Value |
|---|---|
user.name | Alice |
user.email | alice@example.com |
order.id | 123 |
order.total | 99.99 |
Add a nested field
Open the available fields, select the path you need, and check the preview.
Open Add column
Edit the macro, switch to the Columns tab, and select Add column.
Find the path in Columns
Search by field name or path. Nested fields detected during import appear in the list.
Add the field
Select the path you need, such as user.name, then choose Add 1 column. The preview updates immediately.
Rename it if needed
Click the new column and replace the Header in Column details with a reader-friendly label. Save or publish the page when you are done.
TIP
You usually do not need to type a path. Search Add columns by field name or path. For a specific item in a list, a path such as items[0].price is also supported.
A simple example
A CRM team imports customer profiles where contact and account details are grouped together.
- Before
- Name, email, and account status sit inside the profile blocks. The key details are not visible as individual table fields.
- After
- The team adds user.name, user.email, and status.level as columns. They can read, sort, and filter the data directly in Confluence.
Nested JSON Fields
When importing JSON data, some values may be stored inside nested objects instead of appearing at the top level. Simple Tables lets you reference those nested values and expose them as table columns.
COLUMNS
If nested fields are detected during import, you can add them later from the Columns tab by creating a new column and entering the nested field path.
How it works
Nested fields are referenced using dot-separated paths. For example:
[
{
"user": {
"name": "Alice",
"email": "alice@example.com"
},
"order": {
"id": 123,
"total": 99.99
}
},
{
"user": {
"name": "Bob",
"email": "bob@example.com"
},
"order": {
"id": 124,
"total": 149.5
}
}
] From this structure, you can create columns such as:
user.nameuser.emailorder.idorder.total
Use case: Customer profile extraction
Customer Insights Team
Shinkansen Systems — CRM Analytics
Context and challenge:
The CRM team works with JSON profile data where useful information such as contact details, status, and account metadata is stored inside nested objects.
Solution:
They add columns using paths like user.name, user.email, and status.level so those values can appear directly in the table.
Impact:
Teams can work with structured JSON data directly in Confluence without flattening the file in advance or writing extra transformation scripts.
TIP
Dot paths also work with arrays. For example, use items.0.price to access the price of the first item in an array.
Nested field support is especially useful for customer profiles, product catalogs, API responses, and other structured JSON datasets.
READY FOR YOUR FIRST TABLE?
Make your Confluence data genuinely useful.
Install Simple Tables and build your first interactive table directly inside Confluence.
View on Atlassian Marketplace