TO_JSON
Returns the JSON representation of a complex-type argument, including mixed and nested complex types. This is the same format that queries of complex-type columns return.
Behavior
Syntax
TO_JSON(value)
Arguments
value | Column or literal of a complex type |
Supported Data Types
- ROW
- ARRAY
- SET
Examples
These examples query the following table:
=> SELECT name, contact FROM customers; name | contact --------------------+----------------------------------------------------------------------------------------------------------------------- Missy Cooper | {"street":"911 San Marcos St","city":"Austin","zipcode":73344,"email":["missy@mit.edu","mcooper@cern.gov"]} Sheldon Cooper | {"street":"100 Main St Apt 4B","city":"Pasadena","zipcode":91001,"email":["shelly@meemaw.name","cooper@caltech.edu"]} Leonard Hofstadter | {"street":"100 Main St Apt 4A","city":"Pasadena","zipcode":91001,"email":["hofstadter@caltech.edu"]} Leslie Winkle | {"street":"23 Fifth Ave Apt 8C","city":"Pasadena","zipcode":91001,"email":[]} Raj Koothrappali | {"street":null,"city":"Pasadena","zipcode":91001,"email":["raj@available.com"]} Stuart Bloom | (6 rows)
You can call TO_JSON on a column or on specific fields or array elements:
=> SELECT TO_JSON(contact) FROM customers; to_json ----------------------------------------------------------------------------------------------------------------------- {"street":"911 San Marcos St","city":"Austin","zipcode":73344,"email":["missy@mit.edu","mcooper@cern.gov"]} {"street":"100 Main St Apt 4B","city":"Pasadena","zipcode":91001,"email":["shelly@meemaw.name","cooper@caltech.edu"]} {"street":"100 Main St Apt 4A","city":"Pasadena","zipcode":91001,"email":["hofstadter@caltech.edu"]} {"street":"23 Fifth Ave Apt 8C","city":"Pasadena","zipcode":91001,"email":[]} {"street":null,"city":"Pasadena","zipcode":91001,"email":["raj@available.com"]} (6 rows) => SELECT TO_JSON(contact.email) FROM customers; to_json --------------------------------------------- ["missy@mit.edu","mcooper@cern.gov"] ["shelly@meemaw.name","cooper@caltech.edu"] ["hofstadter@caltech.edu"] [] ["raj@available.com"] (6 rows)
When calling TO_JSON with a SET, note that duplicates are removed and elements can be reordered:
=> SELECT TO_JSON(SET[1683,7867,76,76]); TO_JSON ---------------- [76,1683,7867] (1 row)