diff options
author | Joey Adams | 2011-01-17 19:31:15 +0000 |
---|---|---|
committer | Joey Adams | 2011-01-17 19:31:15 +0000 |
commit | abf3ee001d49afec5b5138b48b460c137f27cbc5 (patch) | |
tree | 8ca3ce217aa002d0398c844c6a2237c746933310 | |
parent | 59ad85e9165616e5de89b12465852ccf092f2e47 (diff) |
Added json.html (documentation)
json.html is currently a hand-edited version of the file produced by
running `make html` in the PostgreSQL source tree with json.sgml
added to doc/src/sgml/ and a corresponding entry added to
doc/src/sgml/filelist.sgml . Namely, I removed links and section
numbers, and added "♫" by hand because openjade wasn't being
cooperative with respect to unicode.
-rw-r--r-- | json.html | 493 |
1 files changed, 493 insertions, 0 deletions
diff --git a/json.html b/json.html new file mode 100644 index 0000000..9b44f9b --- /dev/null +++ b/json.html @@ -0,0 +1,493 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML +><HEAD +><TITLE +>json</TITLE +><META +HTTP-EQUIV="Content-Type" +CONTENT="text/html; charset=ISO-8859-1"><META +NAME="creation" +CONTENT="2011-01-17T18:53:37"></HEAD +><BODY +CLASS="SECT1" +><DIV +CLASS="SECT1" +><H1 +CLASS="SECT1" +><A +NAME="JSON" +>json</A +></H1 +><P +> This module implements the <TT +CLASS="TYPE" +>json</TT +> data type for storing <A +HREF="http://www.json.org/" +TARGET="_top" +>JSON</A +> content in <SPAN +CLASS="PRODUCTNAME" +>PostgreSQL</SPAN +>. The advantage of using the <TT +CLASS="TYPE" +>json</TT +> type over storing JSON content in a <TT +CLASS="TYPE" +>text</TT +> field is that it makes sure input values are valid JSON, and there are several type-safe functions for manipulating JSON content. + </P +><P +> The <TT +CLASS="TYPE" +>json</TT +> type stores valid JSON <SPAN +CLASS="QUOTE" +>"values"</SPAN +> as defined by <A +HREF="http://json.org/" +TARGET="_top" +>json.org</A +>. That is, a <TT +CLASS="TYPE" +>json</TT +> field can hold a string, number, object, array, 'true', 'false', or 'null'. + </P +><P +> The <TT +CLASS="TYPE" +>json</TT +> datatype should be thought of as a specialization of <TT +CLASS="TYPE" +>text</TT +> rather than a wrapper around <TT +CLASS="TYPE" +>text</TT +>, <TT +CLASS="TYPE" +>int</TT +>, <TT +CLASS="TYPE" +>float</TT +>, etc. For instance, <TT +CLASS="LITERAL" +>' "string" '::json::text</TT +> will simply yield <TT +CLASS="LITERAL" +>' "string" '</TT +>. Also, bear in mind that JSON null (<TT +CLASS="LITERAL" +>'null'::json</TT +>) and SQL NULL (<TT +CLASS="LITERAL" +>NULL::json</TT +>) are two different things. + </P +><P +> The json module is currently under development. + </P +><DIV +CLASS="SECT2" +><H2 +CLASS="SECT2" +><A +NAME="AEN126334" +><TT +CLASS="TYPE" +>json</TT +> Functions</A +></H2 +><DIV +CLASS="TABLE" +><A +NAME="JSON-FUNC-TABLE" +></A +><TABLE +BORDER="1" +CLASS="CALSTABLE" +><COL><COL><COL><COL><COL><THEAD +><TR +><TH +>Function</TH +><TH +>Return Type</TH +><TH +>Description</TH +><TH +>Example</TH +><TH +>Result</TH +></TR +></THEAD +><TBODY +><TR +><TD +ROWSPAN="2" +><CODE +CLASS="FUNCTION" +>to_json(anyelement)</CODE +></TD +><TD +ROWSPAN="2" +><TT +CLASS="TYPE" +>json</TT +></TD +><TD +ROWSPAN="2" +>Encode a value as JSON.</TD +><TD +><TT +CLASS="LITERAL" +>to_json('string'::TEXT)</TT +></TD +><TD +><TT +CLASS="LITERAL" +>'"string"'</TT +></TD +></TR +><TR +><TD +><TT +CLASS="LITERAL" +>to_json(array['one','two','three',null]::text[])</TT +></TD +><TD +><TT +CLASS="LITERAL" +>'["one","two","three",null]'</TT +></TD +></TR +><TR +><TD +><CODE +CLASS="FUNCTION" +>from_json(json)</CODE +></TD +><TD +><TT +CLASS="TYPE" +>text</TT +></TD +><TD +>Decode a JSON-encoded value.</TD +><TD +><TT +CLASS="LITERAL" +>from_json('"string"')</TT +></TD +><TD +><TT +CLASS="LITERAL" +>'string'</TT +></TD +></TR +><TR +><TD +ROWSPAN="2" +><CODE +CLASS="FUNCTION" +>json_validate(text)</CODE +></TD +><TD +ROWSPAN="2" +><TT +CLASS="TYPE" +>boolean</TT +></TD +><TD +ROWSPAN="2" +>Determine if text is valid JSON.</TD +><TD +><TT +CLASS="LITERAL" +>json_validate('{key: "value"}')</TT +></TD +><TD +><TT +CLASS="LITERAL" +>false</TT +></TD +></TR +><TR +><TD +><TT +CLASS="LITERAL" +>json_validate('{"key": "value"}')</TT +></TD +><TD +><TT +CLASS="LITERAL" +>true</TT +></TD +></TR +><TR +><TD +ROWSPAN="3" +><CODE +CLASS="FUNCTION" +>json_get(json, jsonpath text)</CODE +></TD +><TD +ROWSPAN="3" +><TT +CLASS="TYPE" +>json</TT +></TD +><TD +ROWSPAN="3" +>Select a single value from a JSON tree using a JSONPath expression.</TD +><TD +><TT +CLASS="LITERAL" +>json_get('[0,1,2]', '$[1]')</TT +></TD +><TD +><TT +CLASS="LITERAL" +>'1'</TT +></TD +></TR +><TR +><TD +><TT +CLASS="LITERAL" +>json_get('[0,1,2]', '$[100]')</TT +></TD +><TD +><TT +CLASS="LITERAL" +>NULL</TT +></TD +></TR +><TR +><TD +><TT +CLASS="LITERAL" +>json_get('[0,1,2]', '$[*]')</TT +></TD +><TD +><TT +CLASS="LITERAL" +>Error</TT +></TD +></TR +><TR +><TD +ROWSPAN="3" +><CODE +CLASS="FUNCTION" +>json_set(json, jsonpath text, json)</CODE +></TD +><TD +ROWSPAN="3" +><TT +CLASS="TYPE" +>json</TT +></TD +><TD +ROWSPAN="3" +>Set items in a JSON tree that match a JSONPath expression.</TD +><TD +><TT +CLASS="LITERAL" +>json_set('[0,1,2]', '$[1]', '"x"')</TT +></TD +><TD +><TT +CLASS="LITERAL" +>'[0,"x",2]'</TT +></TD +></TR +><TR +><TD +><TT +CLASS="LITERAL" +>json_set('[0,1,2]', '$[100]', '"x"')</TT +></TD +><TD +><TT +CLASS="LITERAL" +>'[0,1,2]'</TT +></TD +></TR +><TR +><TD +><TT +CLASS="LITERAL" +>json_set('[0,1,2]', '$[*]', '"x"')</TT +></TD +><TD +><TT +CLASS="LITERAL" +>'["x","x","x"]'</TT +></TD +></TR +><TR +><TD +ROWSPAN="3" +><CODE +CLASS="FUNCTION" +>json_path(json, jsonpath text)</CODE +></TD +><TD +ROWSPAN="3" +><TT +CLASS="TYPE" +>setof json</TT +></TD +><TD +ROWSPAN="3" +>Select multiple values from a JSON tree using a JSONPath expression.</TD +><TD +><TT +CLASS="LITERAL" +>json_path('[0,1,2]', '$[1]')</TT +></TD +><TD +><PRE +CLASS="PROGRAMLISTING" +> 1 +(1 row)</PRE +> + </TD +></TR +><TR +><TD +><TT +CLASS="LITERAL" +>json_path('[0,1,2]', '$[100]')</TT +></TD +><TD +><PRE +CLASS="PROGRAMLISTING" +>(0 rows)</PRE +> + </TD +></TR +><TR +><TD +><TT +CLASS="LITERAL" +>json_path('[0,1,2]', '$[*]')</TT +></TD +><TD +><PRE +CLASS="PROGRAMLISTING" +> 0 + 1 + 2 +(3 rows)</PRE +> + </TD +></TR +><TR +><TD +ROWSPAN="2" +><CODE +CLASS="FUNCTION" +>json_condense(json)</CODE +></TD +><TD +ROWSPAN="2" +><TT +CLASS="TYPE" +>json</TT +></TD +><TD +ROWSPAN="2" +>Re-encodes JSON to form a string with minimal length (mainly removes whitespace).</TD +><TD +><TT +CLASS="LITERAL" +>json_condense(' { "key" : "value"} ')</TT +></TD +><TD +><TT +CLASS="LITERAL" +>'{"key":"value"}'</TT +></TD +></TR +><TR +><TD +><TT +CLASS="LITERAL" +>json_condense($$ "\u266B" $$)</TT +></TD +><TD +><TT +CLASS="LITERAL" +>'"♫"' -- if encoding supports Unicode</TT +></TD +></TR +><TR +><TD +><CODE +CLASS="FUNCTION" +>json_type(json)</CODE +></TD +><TD +><TT +CLASS="TYPE" +>json_type_t</TT +> - one of: +<PRE +CLASS="PROGRAMLISTING" +>'null' +'string' +'number' +'bool' +'object' +'array'</PRE +> + </TD +><TD +>Get the type of a <TT +CLASS="TYPE" +>json</TT +> value.</TD +><TD +><TT +CLASS="LITERAL" +>json_type('{"pi": "3.14159", "e": "2.71828"}')</TT +></TD +><TD +><TT +CLASS="LITERAL" +>'object'</TT +></TD +></TR +></TBODY +></TABLE +></DIV +></DIV +><DIV +CLASS="SECT2" +><H2 +CLASS="SECT2" +><A +NAME="AEN126476" +>Author</A +></H2 +><P +> Joey Adams <CODE +CLASS="EMAIL" +><<A +HREF="mailto:[email protected]" +>[email protected]</A +>></CODE +> + </P +><P +> Development of this module was sponsored by Google through its Google Summer of Code program (<A +HREF="http://code.google.com/soc" +TARGET="_top" +>code.google.com/soc</A +>). + </P +></DIV +></DIV +></BODY +></HTML +> |