Skip to content

Table view

The Table view shows an array of objects as rows and columns: one row per element, one column per key. It works on JSON files and on NDJSON files, where each record is a row. The rows come from the file as you page through them, so the table works on arrays with millions of elements.

Select Table in the view switcher. The table shows the root of the document: the root array of a JSON file, or the records of an NDJSON file.

To show an array inside the document, right-click it in the tree and choose View Array as Table, or select it and choose Node → View Array as Table. The footer then reads Table of followed by the array’s path. Select the × next to the path to return to the document root. The Chart view and the Value frequency panel use the same array.

The table needs objects. When the array holds no objects, or the root is an object, the view says “Select a JSON array containing objects to view it as a table.” An element that is not an object, such as a number or an invalid NDJSON line, shows its whole value in the first column.

The table remembers its settings, such as filters and hidden columns, separately for each array until you close the tab. They are not kept when JSON Digger restarts.

The columns are the keys found in the first 50 rows, in the order they first appear. The footer says so: “Sampled first 50 records”. A key that first appears later in the array has no column; use SQL to query it. Export CSV is not limited to the sampled keys: such a key gets a column at the end of the file.

Each column header shows the key, the most common type in the sample, and a short summary of the sampled values, such as the minimum, maximum, and number of distinct values. A nested object or array shows in its cell as a summary such as {...} (3 keys); it is not split into more columns.

To arrange the columns:

  • Resize: drag the edge of a header, or double-click the edge to fit the column to its content.
  • Pin: select the pin button in a header, or choose Pin field to the left from the header menu. The pinned column moves to the left and stays visible while you scroll. One column can be pinned at a time.
  • Hide: choose Hide column from the header menu, or select Fields in the footer and clear the column’s checkbox. Reset widths in the same list restores the default widths.

The header menu opens from the ⋯ button in a header, or when you right-click it. Columns cannot be reordered, except by pinning one to the left.

The table shows 100 rows per page. Use Previous and Next in the footer, type a page number, or press Page Up and Page Down. The footer shows which rows you see, for example “Records 1–100 of 25,000”.

In the cells:

  • A key the row does not have shows as —. A JSON null shows as null.
  • Strings show with their quotes, and long values are shortened.
  • Click a cell to select its node, double-click it to show the node in the Tree view, and use the arrow keys to move between cells.
  • Click a row number to select the row; Ctrl+click and Shift+click select more rows.

Right-click a cell, or press Shift+F10, for these commands:

Command Does
Copy value Copies the cell’s value as JSON
Copy JSON path Copies the path of the cell’s node
Filter by this value Shows only the rows with this value in the column
Exclude this value Hides the rows with this value in the column
Value frequency of column Counts the values of the column; see Value frequency
Reveal in Tree Shows the node in the Tree view

In an NDJSON file, Reveal in Tree on a record past the first 4,096 opens the NDJSON view at its line instead.

  1. Select Filter in the footer. A filter row appears under the headers.

  2. In a column’s filter, choose the operator and type a value. The table updates as you type.

Operator Keeps rows where the column
Contains Contains the text, ignoring case
Equals Has exactly this value. Numbers compare as written: 1 does not equal 1.0.
Not equal Has another value, or no value

Each column has one filter, and a row must match all of them. To remove every filter, select Clear filters in the footer.

Click a column header to sort by that column; click it again to reverse the order. You can also choose Sort ascending or Sort descending from the header menu.

Filtering and sorting read at most the first 100,000 rows of the array. When the array is longer, the footer says so, for example “Records 1–100 · 830 matches in first 100,000 of 2,000,000”. To work on every row of a larger array, use SQL, Value frequency, or Group rows with Scan more.

Paging without a filter or sort has no such limit.

Value frequency counts how often each value occurs in a column, for example how many orders have each status. Open it in one of these ways:

  • Choose Value frequency from a column’s header menu.
  • Right-click a cell and choose Value frequency of column.
  • Select Value frequency on the activity rail, or choose View → Value Frequency of a Column, then pick the Column.

The Frequency of column panel lists the 50 most frequent values, with their count, a bar, and their share of the rows. It counts the rows that match the table’s filters. “(missing)” counts the rows without the key.

In the list:

  • Click a value to filter the table to it.
  • Right-click a value to exclude it.
  • Alt+click a value, or select its crosshair button, to show its first row.

The count reads the first 100,000 rows. When the array is longer, the panel says how many rows it read; select Scan more to read up to 1,000,000 rows. While it counts, the panel shows “Scanning… N%” with a Cancel button.

Group by combines the rows that share a value, with a count and optional totals for each group, for example the number of orders and the total amount per customer.

  1. Choose Group by this column from a column’s header menu, or select Group by in the footer. The table groups by the pinned column, or the first column.

  2. Optional: add up to 3 columns to group by with Add column….

  3. Optional: under Aggregates, choose a function and a column, then select Add. The functions are Sum, Average, Min, Max, and Distinct count.

The table then shows one row per group, with the group’s values, its Count, and one column per aggregate, for example sum(amount). Sum, Average, Min, and Max use JSON numbers only; numbers stored as strings are skipped. Click a header to sort the groups; they start sorted by Count, largest first.

  • Click a group to see its rows: group by ends and the table is filtered to the group’s values.
  • Double-click a group, or select its crosshair button, to show its first row.
  • To stop grouping, choose Toggle Group By from the View menu, or select Group by in the footer again.

Grouping reads the first 100,000 rows; Scan more reads up to 1,000,000. At most 10,000 groups are listed, and the footer counts the rows of any further groups. While it runs, the table shows “Grouping… N%” with a Cancel button.

In group by, Export CSV writes every group, not only the current page. See Export a table as CSV.