json json This module implements the json data type for storing JSON content in PostgreSQL. The advantage of using the json type over storing JSON content in a text field is that it makes sure input values are valid JSON, and there are several type-safe functions for manipulating JSON content. The json type stores valid JSON values as defined by json.org. That is, a json field can hold a string, number, object, array, 'true', 'false', or 'null'. The json datatype should be thought of as a specialization of text rather than a wrapper around text, int, float, etc. For instance, ' "string" '::json::text will simply yield ' "string" '. Also, bear in mind that JSON null ('null'::json) and SQL NULL (NULL::json) are two different things. The json module is currently under development. <type>json</> Functions <type>json</type> Functions Function Return Type Description Example Result to_json(anyelement) json Encode a value as JSON. to_json('string'::TEXT) '"string"' to_json(array['one','two','three',null]::text[]) '["one","two","three",null]' from_json(json) text Decode a JSON-encoded value. from_json('"string"') 'string' json_validate(text) boolean Determine if text is valid JSON. json_validate('{key: "value"}') false json_validate('{"key": "value"}') true json_get(json, jsonpath text) json Select a single value from a JSON tree using a JSONPath expression. json_get('[0,1,2]', '$[1]') '1' json_get('[0,1,2]', '$[100]') NULL json_get('[0,1,2]', '$[*]') Error json_set(json, jsonpath text, json) json Set items in a JSON tree that match a JSONPath expression. json_set('[0,1,2]', '$[1]', '"x"') '[0,"x",2]' json_set('[0,1,2]', '$[100]', '"x"') '[0,1,2]' json_set('[0,1,2]', '$[*]', '"x"') '["x","x","x"]' json_path(json, jsonpath text) setof json Select multiple values from a JSON tree using a JSONPath expression. json_path('[0,1,2]', '$[1]') 1 (1 row) json_path('[0,1,2]', '$[100]') (0 rows) json_path('[0,1,2]', '$[*]') 0 1 2 (3 rows) json_condense(json) json Re-encodes JSON to form a string with minimal length (mainly removes whitespace). json_condense(' { "key" : "value"} ') '{"key":"value"}' json_condense($$ "\u266B" $$) '"♫"' -- if encoding supports Unicode json_get_type(json) json_type -  one of: 'null' 'string' 'number' 'bool' 'object' 'array' Get the type of a json value. json_get_type('{"pi": "3.14159", "e": "2.71828"}') 'object'
Author Joey Adams joeyadams3.14159@gmail.com Development of this module was sponsored by Google through its Google Summer of Code program (code.google.com/soc).