.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
.\"
.\" Standard preamble:
.\" ========================================================================
.de Sh \" Subsection heading
.br
.if t .Sp
.ne 5
.PP
\fB\\$1\fR
.PP
..
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Vb \" Begin verbatim text
.ft CW
.nf
.ne \\$1
..
.de Ve \" End verbatim text
.ft R
.fi
..
.\" Set up some character translations and predefined strings. \*(-- will
.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
.\" double quote, and \*(R" will give a right double quote. | will give a
.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to
.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C'
.\" expand to `' in nroff, nothing in troff, for use with C<>.
.tr \(*W-|\(bv\*(Tr
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
.ie n \{\
. ds -- \(*W-
. ds PI pi
. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
. ds L" ""
. ds R" ""
. ds C` ""
. ds C' ""
'br\}
.el\{\
. ds -- \|\(em\|
. ds PI \(*p
. ds L" ``
. ds R" ''
'br\}
.\"
.\" If the F register is turned on, we'll generate index entries on stderr for
.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
.\" entries marked with X<> in POD. Of course, you'll have to process the
.\" output yourself in some meaningful fashion.
.if \nF \{\
. de IX
. tm Index:\\$1\t\\n%\t"\\$2"
..
. nr % 0
. rr F
.\}
.\"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.hy 0
.if n .na
.\"
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
.\" Fear. Run. Save yourself. No user-serviceable parts.
. \" fudge factors for nroff and troff
.if n \{\
. ds #H 0
. ds #V .8m
. ds #F .3m
. ds #[ \f1
. ds #] \fP
.\}
.if t \{\
. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
. ds #V .6m
. ds #F 0
. ds #[ \&
. ds #] \&
.\}
. \" simple accents for nroff and troff
.if n \{\
. ds ' \&
. ds ` \&
. ds ^ \&
. ds , \&
. ds ~ ~
. ds /
.\}
.if t \{\
. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
.\}
. \" troff and (daisy-wheel) nroff accents
.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
.ds ae a\h'-(\w'a'u*4/10)'e
.ds Ae A\h'-(\w'A'u*4/10)'E
. \" corrections for vroff
.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
. \" for low resolution devices (crt and lpr)
.if \n(.H>23 .if \n(.V>19 \
\{\
. ds : e
. ds 8 ss
. ds o a
. ds d- d\h'-1'\(ga
. ds D- D\h'-1'\(hy
. ds th \o'bp'
. ds Th \o'LP'
. ds ae ae
. ds Ae AE
.\}
.rm #[ #] #H #V #F C
.\" ========================================================================
.\"
.IX Title "Google::Data::JSON 3"
.TH Google::Data::JSON 3 "2008-01-14" "perl v5.8.8" "User Contributed Perl Documentation"
.SH "NAME"
Google::Data::JSON \- General XML\-JSON converter based on Google Data APIs
.SH "SYNOPSIS"
.IX Header "SYNOPSIS"
.Vb 1
\& use Google::Data::JSON qw( gdata );
.Ve
.PP
.Vb 2
\& ## Convert an XML document into a JSON.
\& $json = gdata($xml)->as_json;
.Ve
.PP
.Vb 2
\& ## Convert an XML document into a Perl HASH.
\& $hash = gdata($xml)->as_hash;
.Ve
.PP
.Vb 2
\& ## Convert a JSON into an XML document.
\& $xml = $gdata($json)->as_xml;
.Ve
.PP
.Vb 2
\& ## Convert a JSON into an Atom object.
\& $atom = $gdata($json)->as_atom;
.Ve
.SH "DESCRIPTION"
.IX Header "DESCRIPTION"
\&\fBGoogle::Data::JSON\fR provides several methods to convert an \s-1XML\s0 feed
into a \s-1JSON\s0 feed, and vice versa. The \s-1JSON\s0 format is defined in Google
Data APIs, http://code.google.com/apis/gdata/json.html .
.PP
This module is not restricted to Atom Feed.
Any \s-1XML\s0 documents can be converted into JSON\-format, and vice versa.
.PP
The following rules are described in Google Data APIs:
.Sh "Basic"
.IX Subsection "Basic"
\&\- The feed is represented as a \s-1JSON\s0 object; each nested element or attribute
is represented as a name/value property of the object.
.PP
\&\- Attributes are converted to String properties.
.PP
\&\- Child elements are converted to Object properties.
.PP
\&\- Elements that may appear more than once are converted to Array properties.
.PP
\&\- Text values of tags are converted to \f(CW$t\fR properties.
.Sh "Namespace"
.IX Subsection "Namespace"
\&\- If an element has a namespace alias, the alias and element are concatenated
using \*(L"$\*(R". For example, ns:element becomes ns$element.
.Sh "\s-1XML\s0"
.IX Subsection "XML"
\&\- \s-1XML\s0 version and encoding attributes are converted to attribute version and
encoding of the root element, respectively.
.SH "METHODS"
.IX Header "METHODS"
.Sh "Google::Data::JSON\->new($stream)"
.IX Subsection "Google::Data::JSON->new($stream)"
Creates a new parser object from \fI$stream\fR, such as \s-1XML\s0 and \s-1JSON\s0,
and returns the new Google::Data::JSON object.
On failure, return \*(L"undef\*(R";
.PP
\&\fI$stream\fR can be any one of the following:
.IP "A filename" 4
.IX Item "A filename"
A filename of \s-1XML\s0 or \s-1JSON\s0.
.IP "A string of \s-1XML\s0 or \s-1JSON\s0" 4
.IX Item "A string of XML or JSON"
A string containing \s-1XML\s0 or \s-1JSON\s0.
.IP "An XML::Atom object" 4
.IX Item "An XML::Atom object"
An XML::Atom object, such as XML::Atom::Feed, XML::Atom::Entry,
XML::Atom::Service, and XML::Atom::Categories.
.IP "A Perl \s-1HASH\s0" 4
.IX Item "A Perl HASH"
A Perl hash referece, strictly saying, that is a reference to a data structure
combined with \s-1HASH\s0 and \s-1ARRAY\s0.
.Sh "gdata($stream)"
.IX Subsection "gdata($stream)"
Shortcut for Google::Data::JSON\->\fInew()\fR .
.Sh "$gdata\->as_xml"
.IX Subsection "$gdata->as_xml"
Converts into a string of \s-1XML\s0.
.Sh "$gdata\->as_json"
.IX Subsection "$gdata->as_json"
Converts into a string of \s-1JSON\s0.
.Sh "$gdata\->as_atom"
.IX Subsection "$gdata->as_atom"
Converts into an XML::Atom object.
.Sh "$gdata\->as_hash"
.IX Subsection "$gdata->as_hash"
Converts into a Perl \s-1HASH\s0.
.Sh "$gdata\->as_hashref"
.IX Subsection "$gdata->as_hashref"
\&\s-1DEPRECATED\s0
.Sh "xml_to_json($xml)"
.IX Subsection "xml_to_json($xml)"
.Sh "xml_to_atom($xml)"
.IX Subsection "xml_to_atom($xml)"
.Sh "xml_to_hash($xml)"
.IX Subsection "xml_to_hash($xml)"
.Sh "json_to_xml($json)"
.IX Subsection "json_to_xml($json)"
.Sh "json_to_atom($json)"
.IX Subsection "json_to_atom($json)"
.Sh "json_to_hash($json)"
.IX Subsection "json_to_hash($json)"
.Sh "atom_to_xml($atom)"
.IX Subsection "atom_to_xml($atom)"
.Sh "atom_to_json($atom)"
.IX Subsection "atom_to_json($atom)"
.Sh "atom_to_hash($atom)"
.IX Subsection "atom_to_hash($atom)"
.Sh "hash_to_xml($hash)"
.IX Subsection "hash_to_xml($hash)"
.Sh "hash_to_json($hash)"
.IX Subsection "hash_to_json($hash)"
.Sh "hash_to_atom($hash)"
.IX Subsection "hash_to_atom($hash)"
.Sh "atom_to_hashref"
.IX Subsection "atom_to_hashref"
\&\s-1DEPRECATED\s0
.Sh "json_to_hashref"
.IX Subsection "json_to_hashref"
\&\s-1DEPRECATED\s0
.Sh "xml_to_hashref"
.IX Subsection "xml_to_hashref"
\&\s-1DEPRECATED\s0
.SH "EXPORT"
.IX Header "EXPORT"
None by default.
.SH "EXAMPLE OF XML and JSON"
.IX Header "EXAMPLE OF XML and JSON"
The following example shows \s-1XML\s0 and \s-1JSON\s0 versions of the same document:
.Sh "\s-1XML\s0"
.IX Subsection "XML"
.Vb 41
\&
\&
\& Test Feed
\& tag:example.com,2007:1
\& 2007-01-01T00:00:00Z
\&
\&
\& Test Entry 1
\& tag:example.com,2007:2
\& 2007-02-01T00:00:00Z
\& 2007-02-01T00:00:00Z
\&
\&
\&
\& Foo
\& foo@example.com
\&
\&
\&