<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <!--Rendered using the Haskell Html Library v0.2--> <HTML ><HEAD ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" ><TITLE >Text.JSON</TITLE ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" ><SCRIPT SRC="haddock-util.js" TYPE="text/javascript" ></SCRIPT ><SCRIPT TYPE="text/javascript" >window.onload = function () {setSynopsis("mini_Text-JSON.html")};</SCRIPT ></HEAD ><BODY ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="topbar" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title" >json-0.4.4: Support for serialising Haskell to and from JSON</TD ><TD CLASS="topbut" ><A HREF="src/Text-JSON.html" >Source code</A ></TD ><TD CLASS="topbut" ><A HREF="index.html" >Contents</A ></TD ><TD CLASS="topbut" ><A HREF="doc-index.html" >Index</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="modulebar" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD ><FONT SIZE="6" >Text.JSON</FONT ></TD ><TD ALIGN="right" ><TABLE CLASS="narrow" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="infohead" >Portability</TD ><TD CLASS="infoval" >portable</TD ></TR ><TR ><TD CLASS="infohead" >Stability</TD ><TD CLASS="infoval" >provisional</TD ></TR ><TR ><TD CLASS="infohead" >Maintainer</TD ><TD CLASS="infoval" >Sigbjorn Finne <sof@galois.com></TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="section4" ><B >Contents</B ></TD ></TR ><TR ><TD ><DL ><DT ><A HREF="#1" >JSON Types </A ></DT ><DT ><A HREF="#2" >Serialization to and from JSValues </A ></DT ><DT ><A HREF="#3" >Encoding and Decoding </A ></DT ><DT ><A HREF="#4" >Wrapper Types </A ></DT ><DT ><A HREF="#5" >Serialization to and from Strings. </A ></DT ><DD ><DL ><DT ><A HREF="#6" >Reading JSON </A ></DT ><DT ><A HREF="#7" >Writing JSON </A ></DT ><DT ><A HREF="#8" >Instance helpers </A ></DT ></DL ></DD ></DL ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" >Description</TD ></TR ><TR ><TD CLASS="doc" ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" >Synopsis</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3AJSValue" >JSValue</A > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" >= <A HREF="#v%3AJSNull" >JSNull</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AJSBool" >JSBool</A > !<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AJSRational" >JSRational</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A > !<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational" >Rational</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AJSString" >JSString</A > <A HREF="Text-JSON.html#t%3AJSString" >JSString</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AJSArray" >JSArray</A > [<A HREF="Text-JSON.html#t%3AJSValue" >JSValue</A >]</TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AJSObject" >JSObject</A > (<A HREF="Text-JSON.html#t%3AJSObject" >JSObject</A > <A HREF="Text-JSON.html#t%3AJSValue" >JSValue</A >)</TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >class</SPAN > <A HREF="#t%3AJSON" >JSON</A > a <SPAN CLASS="keyword" >where</SPAN ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="#v%3AreadJSON" >readJSON</A > :: <A HREF="Text-JSON.html#t%3AJSValue" >JSValue</A > -> <A HREF="Text-JSON.html#t%3AResult" >Result</A > a</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AshowJSON" >showJSON</A > :: a -> <A HREF="Text-JSON.html#t%3AJSValue" >JSValue</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AreadJSONs" >readJSONs</A > :: <A HREF="Text-JSON.html#t%3AJSValue" >JSValue</A > -> <A HREF="Text-JSON.html#t%3AResult" >Result</A > [a]</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AshowJSONs" >showJSONs</A > :: [a] -> <A HREF="Text-JSON.html#t%3AJSValue" >JSValue</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3AResult" >Result</A > a </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" >= <A HREF="#v%3AOk" >Ok</A > a</TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AError" >Error</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A ></TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aencode" >encode</A > :: <A HREF="Text-JSON.html#t%3AJSON" >JSON</A > a => a -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Adecode" >decode</A > :: <A HREF="Text-JSON.html#t%3AJSON" >JSON</A > a => <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A > -> <A HREF="Text-JSON.html#t%3AResult" >Result</A > a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AencodeStrict" >encodeStrict</A > :: <A HREF="Text-JSON.html#t%3AJSON" >JSON</A > a => a -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AdecodeStrict" >decodeStrict</A > :: <A HREF="Text-JSON.html#t%3AJSON" >JSON</A > a => <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A > -> <A HREF="Text-JSON.html#t%3AResult" >Result</A > a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3AJSString" >JSString</A > </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtoJSString" >toJSString</A > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A > -> <A HREF="Text-JSON.html#t%3AJSString" >JSString</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AfromJSString" >fromJSString</A > :: <A HREF="Text-JSON.html#t%3AJSString" >JSString</A > -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3AJSObject" >JSObject</A > e</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtoJSObject" >toJSObject</A > :: [(<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A >, a)] -> <A HREF="Text-JSON.html#t%3AJSObject" >JSObject</A > a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AfromJSObject" >fromJSObject</A > :: <A HREF="Text-JSON.html#t%3AJSObject" >JSObject</A > e -> [(<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A >, e)]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AresultToEither" >resultToEither</A > :: <A HREF="Text-JSON.html#t%3AResult" >Result</A > a -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Either.html#t%3AEither" >Either</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A > a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AreadJSNull" >readJSNull</A > :: <A HREF="Text-JSON-String.html#t%3AGetJSON" >GetJSON</A > <A HREF="Text-JSON.html#t%3AJSValue" >JSValue</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AreadJSBool" >readJSBool</A > :: <A HREF="Text-JSON-String.html#t%3AGetJSON" >GetJSON</A > <A HREF="Text-JSON.html#t%3AJSValue" >JSValue</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AreadJSString" >readJSString</A > :: <A HREF="Text-JSON-String.html#t%3AGetJSON" >GetJSON</A > <A HREF="Text-JSON.html#t%3AJSValue" >JSValue</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AreadJSRational" >readJSRational</A > :: <A HREF="Text-JSON-String.html#t%3AGetJSON" >GetJSON</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational" >Rational</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AreadJSArray" >readJSArray</A > :: <A HREF="Text-JSON-String.html#t%3AGetJSON" >GetJSON</A > <A HREF="Text-JSON.html#t%3AJSValue" >JSValue</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AreadJSObject" >readJSObject</A > :: <A HREF="Text-JSON-String.html#t%3AGetJSON" >GetJSON</A > <A HREF="Text-JSON.html#t%3AJSValue" >JSValue</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AreadJSValue" >readJSValue</A > :: <A HREF="Text-JSON-String.html#t%3AGetJSON" >GetJSON</A > <A HREF="Text-JSON.html#t%3AJSValue" >JSValue</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AshowJSNull" >showJSNull</A > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShowS" >ShowS</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AshowJSBool" >showJSBool</A > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A > -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShowS" >ShowS</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AshowJSArray" >showJSArray</A > :: [<A HREF="Text-JSON.html#t%3AJSValue" >JSValue</A >] -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShowS" >ShowS</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AshowJSRational" >showJSRational</A > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational" >Rational</A > -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShowS" >ShowS</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AshowJSRational%27" >showJSRational'</A > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A > -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational" >Rational</A > -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShowS" >ShowS</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AshowJSObject" >showJSObject</A > :: <A HREF="Text-JSON.html#t%3AJSObject" >JSObject</A > <A HREF="Text-JSON.html#t%3AJSValue" >JSValue</A > -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShowS" >ShowS</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AshowJSValue" >showJSValue</A > :: <A HREF="Text-JSON.html#t%3AJSValue" >JSValue</A > -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShowS" >ShowS</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmakeObj" >makeObj</A > :: [(<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A >, <A HREF="Text-JSON.html#t%3AJSValue" >JSValue</A >)] -> <A HREF="Text-JSON.html#t%3AJSValue" >JSValue</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AvalFromObj" >valFromObj</A > :: <A HREF="Text-JSON.html#t%3AJSON" >JSON</A > a => <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A > -> <A HREF="Text-JSON.html#t%3AJSObject" >JSObject</A > <A HREF="Text-JSON.html#t%3AJSValue" >JSValue</A > -> <A HREF="Text-JSON.html#t%3AResult" >Result</A > a</TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="1" ><A NAME="1" >JSON Types </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:JSValue" ><A NAME="t%3AJSValue" ></A ></A ><B >JSValue</B > </TD ><TD CLASS="declbut" ><A HREF="src/Text-JSON-Types.html#JSValue" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" ><P >JSON values </P ><P >The type to which we encode Haskell values. There's a set of primitives, and a couple of heterogenous collection types. </P ><P >Objects: </P ><P >An object structure is represented as a pair of curly brackets surrounding zero or more name/value pairs (or members). A name is a string. A single colon comes after each name, separating the name from the value. A single comma separates a value from a following name. </P ><P >Arrays: </P ><P >An array structure is represented as square brackets surrounding zero or more values (or elements). Elements are separated by commas. </P ><P >Only valid JSON can be constructed this way </P ></TD ></TR ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:JSNull" ><A NAME="v%3AJSNull" ></A ></A ><B >JSNull</B ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:JSBool" ><A NAME="v%3AJSBool" ></A ></A ><B >JSBool</B > !<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:JSRational" ><A NAME="v%3AJSRational" ></A ></A ><B >JSRational</B > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A > !<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational" >Rational</A ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:JSString" ><A NAME="v%3AJSString" ></A ></A ><B >JSString</B > <A HREF="Text-JSON.html#t%3AJSString" >JSString</A ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:JSArray" ><A NAME="v%3AJSArray" ></A ></A ><B >JSArray</B > [<A HREF="Text-JSON.html#t%3AJSValue" >JSValue</A >]</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:JSObject" ><A NAME="v%3AJSObject" ></A ></A ><B >JSObject</B > (<A HREF="Text-JSON.html#t%3AJSObject" >JSObject</A > <A HREF="Text-JSON.html#t%3AJSValue" >JSValue</A >)</TD ><TD CLASS="rdoc" ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:JSValue')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:JSValue" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > <A HREF="Text-JSON.html#t%3AJSValue" >JSValue</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Ord.html#t%3AOrd" >Ord</A > <A HREF="Text-JSON.html#t%3AJSValue" >JSValue</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Read.html#t%3ARead" >Read</A > <A HREF="Text-JSON.html#t%3AJSValue" >JSValue</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShow" >Show</A > <A HREF="Text-JSON.html#t%3AJSValue" >JSValue</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-JSON-Generic.html#t%3ATypeable" >Typeable</A > <A HREF="Text-JSON.html#t%3AJSValue" >JSValue</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-JSON.html#t%3AJSON" >JSON</A > <A HREF="Text-JSON.html#t%3AJSValue" >JSValue</A ></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="2" ><A NAME="2" >Serialization to and from JSValues </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><SPAN CLASS="keyword" >class</SPAN > <A NAME="t:JSON" ><A NAME="t%3AJSON" ></A ></A ><B >JSON</B > a <SPAN CLASS="keyword" >where</SPAN ></TD ><TD CLASS="declbut" ><A HREF="src/Text-JSON.html#JSON" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >The class of types serialisable to and from JSON </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="section4" >Methods</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:readJSON" ><A NAME="v%3AreadJSON" ></A ></A ><B >readJSON</B > :: <A HREF="Text-JSON.html#t%3AJSValue" >JSValue</A > -> <A HREF="Text-JSON.html#t%3AResult" >Result</A > a</TD ><TD CLASS="declbut" ><A HREF="src/Text-JSON.html#readJSON" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:showJSON" ><A NAME="v%3AshowJSON" ></A ></A ><B >showJSON</B > :: a -> <A HREF="Text-JSON.html#t%3AJSValue" >JSValue</A ></TD ><TD CLASS="declbut" ><A HREF="src/Text-JSON.html#showJSON" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:readJSONs" ><A NAME="v%3AreadJSONs" ></A ></A ><B >readJSONs</B > :: <A HREF="Text-JSON.html#t%3AJSValue" >JSValue</A > -> <A HREF="Text-JSON.html#t%3AResult" >Result</A > [a]</TD ><TD CLASS="declbut" ><A HREF="src/Text-JSON.html#readJSONs" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:showJSONs" ><A NAME="v%3AshowJSONs" ></A ></A ><B >showJSONs</B > :: [a] -> <A HREF="Text-JSON.html#t%3AJSValue" >JSValue</A ></TD ><TD CLASS="declbut" ><A HREF="src/Text-JSON.html#showJSONs" >Source</A ></TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:JSON')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:JSON" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Text-JSON.html#t%3AJSON" >JSON</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-JSON.html#t%3AJSON" >JSON</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AChar" >Char</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-JSON.html#t%3AJSON" >JSON</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ADouble" >Double</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-JSON.html#t%3AJSON" >JSON</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AFloat" >Float</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-JSON.html#t%3AJSON" >JSON</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Int.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-JSON.html#t%3AJSON" >JSON</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Int.html#t%3AInt8" >Int8</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-JSON.html#t%3AJSON" >JSON</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Int.html#t%3AInt16" >Int16</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-JSON.html#t%3AJSON" >JSON</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Int.html#t%3AInt32" >Int32</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-JSON.html#t%3AJSON" >JSON</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Int.html#t%3AInt64" >Int64</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-JSON.html#t%3AJSON" >JSON</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AInteger" >Integer</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-JSON.html#t%3AJSON" >JSON</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Ord.html#t%3AOrdering" >Ordering</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-JSON.html#t%3AJSON" >JSON</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Word.html#t%3AWord" >Word</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-JSON.html#t%3AJSON" >JSON</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Word.html#t%3AWord8" >Word8</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-JSON.html#t%3AJSON" >JSON</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Word.html#t%3AWord16" >Word16</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-JSON.html#t%3AJSON" >JSON</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Word.html#t%3AWord32" >Word32</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-JSON.html#t%3AJSON" >JSON</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Word.html#t%3AWord64" >Word64</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-JSON.html#t%3AJSON" >JSON</A > ()</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-JSON.html#t%3AJSON" >JSON</A > <A HREF="/usr/share/doc/ghc/html/libraries/bytestring-0.9.1.7/Data-ByteString-Lazy.html#t%3AByteString" >ByteString</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-JSON.html#t%3AJSON" >JSON</A > <A HREF="/usr/share/doc/ghc/html/libraries/bytestring-0.9.1.7/Data-ByteString.html#t%3AByteString" >ByteString</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-JSON.html#t%3AJSON" >JSON</A > <A HREF="/usr/share/doc/ghc/html/libraries/containers-0.3.0.0/Data-IntSet.html#t%3AIntSet" >IntSet</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-JSON.html#t%3AJSON" >JSON</A > <A HREF="Text-JSON.html#t%3AJSString" >JSString</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-JSON.html#t%3AJSON" >JSON</A > <A HREF="Text-JSON.html#t%3AJSValue" >JSValue</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-JSON.html#t%3AJSON" >JSON</A > a => <A HREF="Text-JSON.html#t%3AJSON" >JSON</A > [a]</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-JSON.html#t%3AJSON" >JSON</A > a => <A HREF="Text-JSON.html#t%3AJSON" >JSON</A > (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-JSON.html#t%3AJSON" >JSON</A > a => <A HREF="Text-JSON.html#t%3AJSON" >JSON</A > (<A HREF="/usr/share/doc/ghc/html/libraries/containers-0.3.0.0/Data-IntMap.html#t%3AIntMap" >IntMap</A > a)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Ord.html#t%3AOrd" >Ord</A > a, <A HREF="Text-JSON.html#t%3AJSON" >JSON</A > a) => <A HREF="Text-JSON.html#t%3AJSON" >JSON</A > (<A HREF="/usr/share/doc/ghc/html/libraries/containers-0.3.0.0/Data-Set.html#t%3ASet" >Set</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-JSON.html#t%3AJSON" >JSON</A > a => <A HREF="Text-JSON.html#t%3AJSON" >JSON</A > (<A HREF="Text-JSON.html#t%3AJSObject" >JSObject</A > a)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Text-JSON.html#t%3AJSON" >JSON</A > a, <A HREF="Text-JSON.html#t%3AJSON" >JSON</A > b) => <A HREF="Text-JSON.html#t%3AJSON" >JSON</A > (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Either.html#t%3AEither" >Either</A > a b)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Text-JSON.html#t%3AJSON" >JSON</A > a, <A HREF="Text-JSON.html#t%3AJSON" >JSON</A > b) => <A HREF="Text-JSON.html#t%3AJSON" >JSON</A > (a, b)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Ix.html#t%3AIx" >Ix</A > i, <A HREF="Text-JSON.html#t%3AJSON" >JSON</A > i, <A HREF="Text-JSON.html#t%3AJSON" >JSON</A > e) => <A HREF="Text-JSON.html#t%3AJSON" >JSON</A > (<A HREF="/usr/share/doc/ghc/html/libraries/array-0.3.0.1/Data-Array.html#t%3AArray" >Array</A > i e)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Ord.html#t%3AOrd" >Ord</A > a, <A HREF="Text-JSON.html#t%3AJSON" >JSON</A > a, <A HREF="Text-JSON.html#t%3AJSON" >JSON</A > b) => <A HREF="Text-JSON.html#t%3AJSON" >JSON</A > (<A HREF="/usr/share/doc/ghc/html/libraries/containers-0.3.0.0/Data-Map.html#t%3AMap" >Map</A > a b)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Text-JSON.html#t%3AJSON" >JSON</A > a, <A HREF="Text-JSON.html#t%3AJSON" >JSON</A > b, <A HREF="Text-JSON.html#t%3AJSON" >JSON</A > c) => <A HREF="Text-JSON.html#t%3AJSON" >JSON</A > (a, b, c)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Text-JSON.html#t%3AJSON" >JSON</A > a, <A HREF="Text-JSON.html#t%3AJSON" >JSON</A > b, <A HREF="Text-JSON.html#t%3AJSON" >JSON</A > c, <A HREF="Text-JSON.html#t%3AJSON" >JSON</A > d) => <A HREF="Text-JSON.html#t%3AJSON" >JSON</A > (a, b, c, d)</TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="3" ><A NAME="3" >Encoding and Decoding </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:Result" ><A NAME="t%3AResult" ></A ></A ><B >Result</B > a </TD ><TD CLASS="declbut" ><A HREF="src/Text-JSON.html#Result" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >A type for parser results </TD ></TR ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:Ok" ><A NAME="v%3AOk" ></A ></A ><B >Ok</B > a</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:Error" ><A NAME="v%3AError" ></A ></A ><B >Error</B > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A ></TD ><TD CLASS="rdoc" ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Result')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:Result" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonad" >Monad</A > <A HREF="Text-JSON.html#t%3AResult" >Result</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AFunctor" >Functor</A > <A HREF="Text-JSON.html#t%3AResult" >Result</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AMonadPlus" >MonadPlus</A > <A HREF="Text-JSON.html#t%3AResult" >Result</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Applicative.html#t%3AApplicative" >Applicative</A > <A HREF="Text-JSON.html#t%3AResult" >Result</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Applicative.html#t%3AAlternative" >Alternative</A > <A HREF="Text-JSON.html#t%3AResult" >Result</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="/usr/share/doc/ghc/html/libraries/mtl-1.1.0.2/Control-Monad-Error-Class.html#t%3AMonadError" >MonadError</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A > <A HREF="Text-JSON.html#t%3AResult" >Result</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > a => <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > (<A HREF="Text-JSON.html#t%3AResult" >Result</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShow" >Show</A > a => <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShow" >Show</A > (<A HREF="Text-JSON.html#t%3AResult" >Result</A > a)</TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:encode" ><A NAME="v%3Aencode" ></A ></A ><B >encode</B > :: <A HREF="Text-JSON.html#t%3AJSON" >JSON</A > a => a -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A ></TD ><TD CLASS="declbut" ><A HREF="src/Text-JSON.html#encode" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" ><P >Encode a Haskell value into a string, in JSON format. </P ><P >This is a superset of JSON, as types other than Array and Object are allowed at the top level. </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:decode" ><A NAME="v%3Adecode" ></A ></A ><B >decode</B > :: <A HREF="Text-JSON.html#t%3AJSON" >JSON</A > a => <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A > -> <A HREF="Text-JSON.html#t%3AResult" >Result</A > a</TD ><TD CLASS="declbut" ><A HREF="src/Text-JSON.html#decode" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" ><P >Decode a String representing a JSON value (either an object, array, bool, number, null) </P ><P >This is a superset of JSON, as types other than Array and Object are allowed at the top level. </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:encodeStrict" ><A NAME="v%3AencodeStrict" ></A ></A ><B >encodeStrict</B > :: <A HREF="Text-JSON.html#t%3AJSON" >JSON</A > a => a -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A ></TD ><TD CLASS="declbut" ><A HREF="src/Text-JSON.html#encodeStrict" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Encode a value as a String in strict JSON format. This follows the spec, and requires all values at the top level to be wrapped in either an Array or Object. JSON types to be an Array or Object. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:decodeStrict" ><A NAME="v%3AdecodeStrict" ></A ></A ><B >decodeStrict</B > :: <A HREF="Text-JSON.html#t%3AJSON" >JSON</A > a => <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A > -> <A HREF="Text-JSON.html#t%3AResult" >Result</A > a</TD ><TD CLASS="declbut" ><A HREF="src/Text-JSON.html#decodeStrict" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Decode a String representing a strict JSON value. This follows the spec, and requires top level JSON types to be an Array or Object. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="4" ><A NAME="4" >Wrapper Types </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:JSString" ><A NAME="t%3AJSString" ></A ></A ><B >JSString</B > </TD ><TD CLASS="declbut" ><A HREF="src/Text-JSON-Types.html#JSString" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >Strings can be represented a little more efficiently in JSON </TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:JSString')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:JSString" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > <A HREF="Text-JSON.html#t%3AJSString" >JSString</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Ord.html#t%3AOrd" >Ord</A > <A HREF="Text-JSON.html#t%3AJSString" >JSString</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Read.html#t%3ARead" >Read</A > <A HREF="Text-JSON.html#t%3AJSString" >JSString</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShow" >Show</A > <A HREF="Text-JSON.html#t%3AJSString" >JSString</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-JSON-Generic.html#t%3ATypeable" >Typeable</A > <A HREF="Text-JSON.html#t%3AJSString" >JSString</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-JSON.html#t%3AJSON" >JSON</A > <A HREF="Text-JSON.html#t%3AJSString" >JSString</A ></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:toJSString" ><A NAME="v%3AtoJSString" ></A ></A ><B >toJSString</B > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A > -> <A HREF="Text-JSON.html#t%3AJSString" >JSString</A ></TD ><TD CLASS="declbut" ><A HREF="src/Text-JSON-Types.html#toJSString" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Turn a Haskell string into a JSON string. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:fromJSString" ><A NAME="v%3AfromJSString" ></A ></A ><B >fromJSString</B > :: <A HREF="Text-JSON.html#t%3AJSString" >JSString</A > -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A ></TD ><TD CLASS="declbut" ><A HREF="src/Text-JSON-Types.html#fromJSString" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:JSObject" ><A NAME="t%3AJSObject" ></A ></A ><B >JSObject</B > e </TD ><TD CLASS="declbut" ><A HREF="src/Text-JSON-Types.html#JSObject" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >As can association lists </TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:JSObject')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:JSObject" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Typeable.html#t%3ATypeable1" >Typeable1</A > <A HREF="Text-JSON.html#t%3AJSObject" >JSObject</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > e => <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > (<A HREF="Text-JSON.html#t%3AJSObject" >JSObject</A > e)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Ord.html#t%3AOrd" >Ord</A > e => <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Ord.html#t%3AOrd" >Ord</A > (<A HREF="Text-JSON.html#t%3AJSObject" >JSObject</A > e)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Read.html#t%3ARead" >Read</A > e => <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Read.html#t%3ARead" >Read</A > (<A HREF="Text-JSON.html#t%3AJSObject" >JSObject</A > e)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShow" >Show</A > e => <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShow" >Show</A > (<A HREF="Text-JSON.html#t%3AJSObject" >JSObject</A > e)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-JSON.html#t%3AJSON" >JSON</A > a => <A HREF="Text-JSON.html#t%3AJSON" >JSON</A > (<A HREF="Text-JSON.html#t%3AJSObject" >JSObject</A > a)</TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:toJSObject" ><A NAME="v%3AtoJSObject" ></A ></A ><B >toJSObject</B > :: [(<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A >, a)] -> <A HREF="Text-JSON.html#t%3AJSObject" >JSObject</A > a</TD ><TD CLASS="declbut" ><A HREF="src/Text-JSON-Types.html#toJSObject" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Make JSON object out of an association list. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:fromJSObject" ><A NAME="v%3AfromJSObject" ></A ></A ><B >fromJSObject</B > :: <A HREF="Text-JSON.html#t%3AJSObject" >JSObject</A > e -> [(<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A >, e)]</TD ><TD CLASS="declbut" ><A HREF="src/Text-JSON-Types.html#fromJSObject" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:resultToEither" ><A NAME="v%3AresultToEither" ></A ></A ><B >resultToEither</B > :: <A HREF="Text-JSON.html#t%3AResult" >Result</A > a -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Either.html#t%3AEither" >Either</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A > a</TD ><TD CLASS="declbut" ><A HREF="src/Text-JSON.html#resultToEither" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Map Results to Eithers </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="5" ><A NAME="5" >Serialization to and from Strings. </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section2" ><A NAME="6" ><A NAME="6" >Reading JSON </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:readJSNull" ><A NAME="v%3AreadJSNull" ></A ></A ><B >readJSNull</B > :: <A HREF="Text-JSON-String.html#t%3AGetJSON" >GetJSON</A > <A HREF="Text-JSON.html#t%3AJSValue" >JSValue</A ></TD ><TD CLASS="declbut" ><A HREF="src/Text-JSON-String.html#readJSNull" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Read the JSON null type </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:readJSBool" ><A NAME="v%3AreadJSBool" ></A ></A ><B >readJSBool</B > :: <A HREF="Text-JSON-String.html#t%3AGetJSON" >GetJSON</A > <A HREF="Text-JSON.html#t%3AJSValue" >JSValue</A ></TD ><TD CLASS="declbut" ><A HREF="src/Text-JSON-String.html#readJSBool" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Read the JSON Bool type </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:readJSString" ><A NAME="v%3AreadJSString" ></A ></A ><B >readJSString</B > :: <A HREF="Text-JSON-String.html#t%3AGetJSON" >GetJSON</A > <A HREF="Text-JSON.html#t%3AJSValue" >JSValue</A ></TD ><TD CLASS="declbut" ><A HREF="src/Text-JSON-String.html#readJSString" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Read the JSON String type </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:readJSRational" ><A NAME="v%3AreadJSRational" ></A ></A ><B >readJSRational</B > :: <A HREF="Text-JSON-String.html#t%3AGetJSON" >GetJSON</A > <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational" >Rational</A ></TD ><TD CLASS="declbut" ><A HREF="src/Text-JSON-String.html#readJSRational" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Read an Integer or Double in JSON format, returning a Rational </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:readJSArray" ><A NAME="v%3AreadJSArray" ></A ></A ><B >readJSArray</B > :: <A HREF="Text-JSON-String.html#t%3AGetJSON" >GetJSON</A > <A HREF="Text-JSON.html#t%3AJSValue" >JSValue</A ></TD ><TD CLASS="declbut" ><A HREF="src/Text-JSON-String.html#readJSArray" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Read a list in JSON format </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:readJSObject" ><A NAME="v%3AreadJSObject" ></A ></A ><B >readJSObject</B > :: <A HREF="Text-JSON-String.html#t%3AGetJSON" >GetJSON</A > <A HREF="Text-JSON.html#t%3AJSValue" >JSValue</A ></TD ><TD CLASS="declbut" ><A HREF="src/Text-JSON-String.html#readJSObject" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Read an object in JSON format </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:readJSValue" ><A NAME="v%3AreadJSValue" ></A ></A ><B >readJSValue</B > :: <A HREF="Text-JSON-String.html#t%3AGetJSON" >GetJSON</A > <A HREF="Text-JSON.html#t%3AJSValue" >JSValue</A ></TD ><TD CLASS="declbut" ><A HREF="src/Text-JSON-String.html#readJSValue" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Read one of several possible JS types </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section2" ><A NAME="7" ><A NAME="7" >Writing JSON </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:showJSNull" ><A NAME="v%3AshowJSNull" ></A ></A ><B >showJSNull</B > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShowS" >ShowS</A ></TD ><TD CLASS="declbut" ><A HREF="src/Text-JSON-String.html#showJSNull" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Write the JSON null type </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:showJSBool" ><A NAME="v%3AshowJSBool" ></A ></A ><B >showJSBool</B > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A > -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShowS" >ShowS</A ></TD ><TD CLASS="declbut" ><A HREF="src/Text-JSON-String.html#showJSBool" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Write the JSON Bool type </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:showJSArray" ><A NAME="v%3AshowJSArray" ></A ></A ><B >showJSArray</B > :: [<A HREF="Text-JSON.html#t%3AJSValue" >JSValue</A >] -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShowS" >ShowS</A ></TD ><TD CLASS="declbut" ><A HREF="src/Text-JSON-String.html#showJSArray" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Show a list in JSON format </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:showJSRational" ><A NAME="v%3AshowJSRational" ></A ></A ><B >showJSRational</B > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational" >Rational</A > -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShowS" >ShowS</A ></TD ><TD CLASS="declbut" ><A HREF="src/Text-JSON-String.html#showJSRational" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Show a Rational in JSON format </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:showJSRational'" ><A NAME="v%3AshowJSRational%27" ></A ></A ><B >showJSRational'</B > :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A > -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational" >Rational</A > -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShowS" >ShowS</A ></TD ><TD CLASS="declbut" ><A HREF="src/Text-JSON-String.html#showJSRational%27" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:showJSObject" ><A NAME="v%3AshowJSObject" ></A ></A ><B >showJSObject</B > :: <A HREF="Text-JSON.html#t%3AJSObject" >JSObject</A > <A HREF="Text-JSON.html#t%3AJSValue" >JSValue</A > -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShowS" >ShowS</A ></TD ><TD CLASS="declbut" ><A HREF="src/Text-JSON-String.html#showJSObject" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Show an association list in JSON format </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:showJSValue" ><A NAME="v%3AshowJSValue" ></A ></A ><B >showJSValue</B > :: <A HREF="Text-JSON.html#t%3AJSValue" >JSValue</A > -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShowS" >ShowS</A ></TD ><TD CLASS="declbut" ><A HREF="src/Text-JSON-String.html#showJSValue" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Show JSON values </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section2" ><A NAME="8" ><A NAME="8" >Instance helpers </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:makeObj" ><A NAME="v%3AmakeObj" ></A ></A ><B >makeObj</B > :: [(<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A >, <A HREF="Text-JSON.html#t%3AJSValue" >JSValue</A >)] -> <A HREF="Text-JSON.html#t%3AJSValue" >JSValue</A ></TD ><TD CLASS="declbut" ><A HREF="src/Text-JSON.html#makeObj" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="topdecl" ><TABLE CLASS="declbar" ><TR ><TD CLASS="declname" ><A NAME="v:valFromObj" ><A NAME="v%3AvalFromObj" ></A ></A ><B >valFromObj</B > :: <A HREF="Text-JSON.html#t%3AJSON" >JSON</A > a => <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString" >String</A > -> <A HREF="Text-JSON.html#t%3AJSObject" >JSObject</A > <A HREF="Text-JSON.html#t%3AJSValue" >JSValue</A > -> <A HREF="Text-JSON.html#t%3AResult" >Result</A > a</TD ><TD CLASS="declbut" ><A HREF="src/Text-JSON.html#valFromObj" >Source</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="doc" >Pull a value out of a JSON object. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="botbar" >Produced by <A HREF="http://www.haskell.org/haddock/" >Haddock</A > version 2.6.1</TD ></TR ></TABLE ></BODY ></HTML >