.\" 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 \& \& \&
\& Test 1 \&
\&
\&
\& \& Test Entry 2 \& tag:example.com,2007:3 \& 2007-03-01T00:00:00Z \& 2007-03-01T00:00:00Z \& \& \& \& Bar \& bar@example.com \& \& \&
\& Test 2 \&
\&
\&
\&
.Ve .Sh "\s-1JSON\s0" .IX Subsection "JSON" .Vb 102 \& { \& "feed" : { \& "xmlns" : "http://www.w3.org/2005/Atom", \& "title" : { \& "$t" : "Test Feed" \& }, \& "id" : { \& "$t" : "tag:example.com,2007:1" \& }, \& "updated" : { \& "$t" : "2007-01-01T00:00:00Z" \& }, \& "link" : { \& "rel" : "self", \& "href" : "http://example.com/feed.atom" \& }, \& "entry" : [ \& { \& "published" : { \& "$t" : "2007-02-01T00:00:00Z" \& }, \& "link" : [ \& { \& "rel" : "alternate", \& "href" : "http://example.com/1" \& }, \& { \& "rel" : "edit", \& "href" : "http://example.com/edit/1" \& } \& ], \& "content" : { \& "div" : { \& "xmlns" : "http://www.w3.org/1999/xhtml", \& "span" : { \& "$t" : "Test 1" \& } \& }, \& "type" : "xhtml" \& }, \& "title" : { \& "$t" : "Test Entry 1" \& }, \& "id" : { \& "$t" : "tag:example.com,2007:2" \& }, \& "updated" : { \& "$t" : "2007-02-01T00:00:00Z" \& }, \& "author" : { \& "email" : { \& "$t" : "foo@example.com" \& }, \& "name" : { \& "$t" : "Foo" \& } \& } \& }, \& { \& "published" : { \& "$t" : "2007-03-01T00:00:00Z" \& }, \& "link" : [ \& { \& "rel" : "alternate", \& "href" : "http://example.com/2" \& }, \& { \& "rel" : "edit", \& "href" : "http://example.com/edit/2" \& } \& ], \& "content" : { \& "div" : { \& "xmlns" : "http://www.w3.org/1999/xhtml", \& "span" : { \& "$t" : "Test 2" \& } \& }, \& "type" : "xhtml" \& }, \& "title" : { \& "$t" : "Test Entry 2" \& }, \& "id" : { \& "$t" : "tag:example.com,2007:3" \& }, \& "updated" : { \& "$t" : "2007-03-01T00:00:00Z" \& }, \& "author" : { \& "email" : { \& "$t" : "bar@example.com" \& }, \& "name" : { \& "$t" : "Bar" \& } \& } \& } \& ] \& } \& } .Ve .SH "SEE ALSO" .IX Header "SEE ALSO" XML::Atom .SH "AUTHOR" .IX Header "AUTHOR" Takeru \s-1INOUE\s0 \f(CW\*(C`\*(C'\fR .SH "LICENCE AND COPYRIGHT" .IX Header "LICENCE AND COPYRIGHT" Copyright (c) 2007, Takeru \s-1INOUE\s0 \f(CW\*(C`\*(C'\fR. All rights reserved. .PP This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See perlartistic. .SH "DISCLAIMER OF WARRANTY" .IX Header "DISCLAIMER OF WARRANTY" \&\s-1BECAUSE\s0 \s-1THIS\s0 \s-1SOFTWARE\s0 \s-1IS\s0 \s-1LICENSED\s0 \s-1FREE\s0 \s-1OF\s0 \s-1CHARGE\s0, \s-1THERE\s0 \s-1IS\s0 \s-1NO\s0 \s-1WARRANTY\s0 \&\s-1FOR\s0 \s-1THE\s0 \s-1SOFTWARE\s0, \s-1TO\s0 \s-1THE\s0 \s-1EXTENT\s0 \s-1PERMITTED\s0 \s-1BY\s0 \s-1APPLICABLE\s0 \s-1LAW\s0. \s-1EXCEPT\s0 \s-1WHEN\s0 \&\s-1OTHERWISE\s0 \s-1STATED\s0 \s-1IN\s0 \s-1WRITING\s0 \s-1THE\s0 \s-1COPYRIGHT\s0 \s-1HOLDERS\s0 \s-1AND/OR\s0 \s-1OTHER\s0 \s-1PARTIES\s0 \&\s-1PROVIDE\s0 \s-1THE\s0 \s-1SOFTWARE\s0 \*(L"\s-1AS\s0 \s-1IS\s0\*(R" \s-1WITHOUT\s0 \s-1WARRANTY\s0 \s-1OF\s0 \s-1ANY\s0 \s-1KIND\s0, \s-1EITHER\s0 \&\s-1EXPRESSED\s0 \s-1OR\s0 \s-1IMPLIED\s0, \s-1INCLUDING\s0, \s-1BUT\s0 \s-1NOT\s0 \s-1LIMITED\s0 \s-1TO\s0, \s-1THE\s0 \s-1IMPLIED\s0 \&\s-1WARRANTIES\s0 \s-1OF\s0 \s-1MERCHANTABILITY\s0 \s-1AND\s0 \s-1FITNESS\s0 \s-1FOR\s0 A \s-1PARTICULAR\s0 \s-1PURPOSE\s0. \s-1THE\s0 \&\s-1ENTIRE\s0 \s-1RISK\s0 \s-1AS\s0 \s-1TO\s0 \s-1THE\s0 \s-1QUALITY\s0 \s-1AND\s0 \s-1PERFORMANCE\s0 \s-1OF\s0 \s-1THE\s0 \s-1SOFTWARE\s0 \s-1IS\s0 \s-1WITH\s0 \&\s-1YOU\s0. \s-1SHOULD\s0 \s-1THE\s0 \s-1SOFTWARE\s0 \s-1PROVE\s0 \s-1DEFECTIVE\s0, \s-1YOU\s0 \s-1ASSUME\s0 \s-1THE\s0 \s-1COST\s0 \s-1OF\s0 \s-1ALL\s0 \&\s-1NECESSARY\s0 \s-1SERVICING\s0, \s-1REPAIR\s0, \s-1OR\s0 \s-1CORRECTION\s0. .PP \&\s-1IN\s0 \s-1NO\s0 \s-1EVENT\s0 \s-1UNLESS\s0 \s-1REQUIRED\s0 \s-1BY\s0 \s-1APPLICABLE\s0 \s-1LAW\s0 \s-1OR\s0 \s-1AGREED\s0 \s-1TO\s0 \s-1IN\s0 \s-1WRITING\s0 \&\s-1WILL\s0 \s-1ANY\s0 \s-1COPYRIGHT\s0 \s-1HOLDER\s0, \s-1OR\s0 \s-1ANY\s0 \s-1OTHER\s0 \s-1PARTY\s0 \s-1WHO\s0 \s-1MAY\s0 \s-1MODIFY\s0 \s-1AND/OR\s0 \&\s-1REDISTRIBUTE\s0 \s-1THE\s0 \s-1SOFTWARE\s0 \s-1AS\s0 \s-1PERMITTED\s0 \s-1BY\s0 \s-1THE\s0 \s-1ABOVE\s0 \s-1LICENCE\s0, \s-1BE\s0 \&\s-1LIABLE\s0 \s-1TO\s0 \s-1YOU\s0 \s-1FOR\s0 \s-1DAMAGES\s0, \s-1INCLUDING\s0 \s-1ANY\s0 \s-1GENERAL\s0, \s-1SPECIAL\s0, \s-1INCIDENTAL\s0, \&\s-1OR\s0 \s-1CONSEQUENTIAL\s0 \s-1DAMAGES\s0 \s-1ARISING\s0 \s-1OUT\s0 \s-1OF\s0 \s-1THE\s0 \s-1USE\s0 \s-1OR\s0 \s-1INABILITY\s0 \s-1TO\s0 \s-1USE\s0 \&\s-1THE\s0 \s-1SOFTWARE\s0 (\s-1INCLUDING\s0 \s-1BUT\s0 \s-1NOT\s0 \s-1LIMITED\s0 \s-1TO\s0 \s-1LOSS\s0 \s-1OF\s0 \s-1DATA\s0 \s-1OR\s0 \s-1DATA\s0 \s-1BEING\s0 \&\s-1RENDERED\s0 \s-1INACCURATE\s0 \s-1OR\s0 \s-1LOSSES\s0 \s-1SUSTAINED\s0 \s-1BY\s0 \s-1YOU\s0 \s-1OR\s0 \s-1THIRD\s0 \s-1PARTIES\s0 \s-1OR\s0 A \&\s-1FAILURE\s0 \s-1OF\s0 \s-1THE\s0 \s-1SOFTWARE\s0 \s-1TO\s0 \s-1OPERATE\s0 \s-1WITH\s0 \s-1ANY\s0 \s-1OTHER\s0 \s-1SOFTWARE\s0), \s-1EVEN\s0 \s-1IF\s0 \&\s-1SUCH\s0 \s-1HOLDER\s0 \s-1OR\s0 \s-1OTHER\s0 \s-1PARTY\s0 \s-1HAS\s0 \s-1BEEN\s0 \s-1ADVISED\s0 \s-1OF\s0 \s-1THE\s0 \s-1POSSIBILITY\s0 \s-1OF\s0 \&\s-1SUCH\s0 \s-1DAMAGES\s0.