PARSE_JSON() converts a text string into Snowflake’s semi-structured VARIANT type so you can query JSON with dot or bracket notation.
PARSE_JSON() takes a VARCHAR string that contains valid JSON and returns a VARIANT value. Once the data is VARIANT, you can use dot or bracket notation, FLATTEN, and other semi-structured functions to query nested objects and arrays.
Use PARSE_JSON(string_expr) in a SELECT list, WHERE clause, or as part of an INSERT/UPDATE.The function returns NULL if the string is not valid JSON.
Suppose the Orders
table has a order_meta
VARCHAR column holding JSON like {"payment":"card","shipping":{"speed":"express"}}.Use SELECT PARSE_JSON(order_meta) AS meta FROM Orders;
to convert it to VARIANT for easy access.
Once parsed, reference keys directly: SELECT meta:shipping:speed AS ship_speed FROM (SELECT PARSE_JSON(order_meta) AS meta FROM Orders);
returns “express.” Arrays use bracket indices, e.g., items[0]
.
Yes.Insert parsed JSON into a VARIANT column: INSERT INTO OrderItems_JSON(id, details) SELECT id, PARSE_JSON(raw_json) FROM Staging_OrderItems;
• Validate JSON upstream when possible.
• Store parsed data in VARIANT columns to avoid repeated parsing.
• Index high-use paths with CLUSTER BY.
• Use TRY_PARSE_JSON() if bad input is common.
Use TRY_PARSE_JSON() or IS_NULL_VALUE checks to prevent query failure.
Materialize PARSE_JSON() into a VARIANT column for performance.
Function: PARSE_JSON()
Input: VARCHAR JSON string
Output: VARIANT
Error Handling: NULL on invalid input; use TRY_PARSE_JSON() to suppress errors.
.
Yes, given the same input it returns the same VARIANT value, making it safe for materialized views.
Use TRY_PARSE_JSON() when your data source occasionally emits invalid JSON. It returns NULL instead of throwing an error, allowing the query to continue.
No. JSON must follow the strict RFC 8259 format without comments or trailing commas.