summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Adams2011-01-17 19:31:15 +0000
committerJoey Adams2011-01-17 19:31:15 +0000
commitabf3ee001d49afec5b5138b48b460c137f27cbc5 (patch)
tree8ca3ce217aa002d0398c844c6a2237c746933310
parent59ad85e9165616e5de89b12465852ccf092f2e47 (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.html493
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"
+>'"&#9835;"' -- 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
+>&nbsp;-&nbsp;&nbsp;one&nbsp;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"
+>&#60;<A
+HREF="mailto:[email protected]"
+>&#62;</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
+>