SmartQueryTools

Extract JSON Column from JSON Files Online

Extract values from a JSON-encoded column in JSON files into a new flat column using a JSON path expression. Runs in your browser.

How to extract JSON Column from JSON files

  1. Drop your file onto the upload area. It is loaded into the in-browser engine and the first 200 rows are shown.
  2. Choose the JSON column. Only text columns are listed, and the first one is selected for you.
  3. Type a JSON path such as $.customer.country or $.tags[0]. The new column name fills in from the last part of the path, and you can change it.
  4. Pick Extract string value for plain text, or Extract raw JSON to keep quotes, objects and arrays as JSON text. Click Extract.
  5. Check the new column in the preview, then download the file in the same format you uploaded.

Your file is processed locally in your browser and is never uploaded. The free limit is 50 MB per file; larger files work if your device has the memory for them.

Worked example

A payments webhook log was exported with the whole event body in one payload column. The analyst needs the customer's country as its own column to count paid orders by country. One event is a refund, which has no customer object.

Input (JSON)

[
  {
    "event_id": 1,
    "received_at": "2026-08-01 09:14:00",
    "payload": "{\"type\":\"order.paid\",\"customer\":{\"id\":\"c_81\",\"country\":\"IE\"},\"total\":42.5}"
  },
  {
    "event_id": 2,
    "received_at": "2026-08-01 09:20:31",
    "payload": "{\"type\":\"order.paid\",\"customer\":{\"id\":\"c_17\",\"country\":\"DE\"},\"total\":18}"
  },
  {
    "event_id": 3,
    "received_at": "2026-08-01 10:02:07",
    "payload": "{\"type\":\"refund.created\",\"order_id\":\"o_992\"}"
  },
  {
    "event_id": 4,
    "received_at": "2026-08-01 10:45:50",
    "payload": "{\"type\":\"order.paid\",\"customer\":{\"id\":\"c_40\",\"country\":\"US\"},\"total\":99.9}"
  }
]

Settings

  • JSON column: payload
  • JSON path: $.customer.country
  • New column name: country (filled in from the path)
  • Extract mode: Extract string value

Result

event_idreceived_atpayloadcountry
12026-08-01 09:14:00{"type":"order.paid","customer":{"id":"c_81","country":"IE"},"total":42.5}IE
22026-08-01 09:20:31{"type":"order.paid","customer":{"id":"c_17","country":"DE"},"total":18}DE
32026-08-01 10:02:07{"type":"refund.created","order_id":"o_992"}NULL
42026-08-01 10:45:50{"type":"order.paid","customer":{"id":"c_40","country":"US"},"total":99.9}US

The path walks into the customer object and returns its country for each row. The refund event has no customer key, so the path finds nothing and the new column is NULL for that row. Nothing fails. The payload column is kept as it was. With Extract raw JSON, the values would keep their JSON quotes, as "IE" rather than IE.

Working with JSON files

This page is for JSON files where a key holds a JSON document encoded as a string, such as "payload": "{\"type\":\"order.paid\"}". Webhook logs, message-queue dumps and some NoSQL exports look like this. Real nested objects are a different case. They load as struct columns, and do not appear in the JSON column picker. Use Flatten for those. A key whose values mix objects and plain strings loads as a JSON-typed column, and that one is listed, so you can extract a path from the objects.

The new key is added at the end of every object in the output array. In string mode it holds plain text such as "IE". In raw mode it holds the JSON text as a string, such as "\"IE\"" or "{\"id\":\"c_81\"}". It is not turned back into a nested object. Objects where the path is missing get null for the new key. Path lookups are case-sensitive, so $.Customer will not match a key named customer. The original string key is kept next to the new one, so you can compare them in the output.

Frequently Asked Questions

My JSON file has nested objects. Should I use this tool or Flatten?

Use Flatten. Nested objects load as struct columns, which this tool does not list. This tool is for keys whose value is a string containing JSON, which is common in event logs and database exports.

Does raw mode put a nested object back into the JSON output?

No. Raw mode returns JSON text, and it is written as a string value in the output. Use string mode for scalar values like IDs and country codes.

What JSON path syntax is supported?

Start with $ for the root, use dots for keys ($.user.email) and brackets for array positions ($.tags[0]). Negative positions count from the end, so $.tags[-1] is the last element. Quote keys that contain spaces: $."first name". Keys are case-sensitive.

What happens when the path does not exist or a row is not valid JSON?

Both give NULL for that row, and so does an empty cell. The run does not stop. After it finishes, the tool shows how many rows were not valid JSON, so you know whether to clean them.

Can I extract several fields in one run?

No, one path per run, and each run starts from the uploaded file. Download the result and load it again to add another field, or use the SQL Query tool with several json_extract_string calls in one SELECT.

Related Tools