Apache Abdera > Documentation > JSON Serialization
Added by James M Snell, last edited by James M Snell on Jan 08, 2008  (view change)

The Abdera JSON Writer serializes Atom objects into a JSON format. The output depends largely on what Abdera Model object is being serialized. Null values are omitted from the output.

Example Serialization: http://www.snellspace.com/public/atom2json.txt

See also http://www.ibm.com/developerworks/library/x-atom2json.html

Serializing org.apache.abdera.model.Document

  Abdera abdera = new Abdera();
  Document doc = ...
  Writer writer = abdera.getWriterFactory().getWriter("json");
  writer.writeTo(doc,System.out);

The fields correspond to the various getters on the Document object and represent information acquired primarily from the HTTP Headers of the source Atom document.

Field Description
base The Base URI
charset The charset encoding
contenttype The MIME media type of the document
etag The Entity Tag of the document
lastmodified The number of milliseconds since the epoch indicating the value of the Last-Modified header
language The value of the Content-Language header
slug The value of the Slug header
whitespace false if insignificant whitespace should be ignored. equivalent to xml:space
root json serialization of the root element

Serializing org.apache.abdera.model.Feed

  Abdera abdera = new Abdera();
  Document<Feed> doc = ...
  Feed feed = doc.getRoot();
  Writer writer = abdera.getWriterFactory().getWriter("json");
  writer.writeTo(feed,System.out);

Produces:

Field Description
id The atom:id value
title serialization of the atom:title
subtitle serialization of the atom:subtitle
rights serialization of the atom:rights
updated number of milliseconds since the epoch, serialization of the atom:updated
generator serialization of atom:generator
icon absolute URI, serialization of atom:icon
logo absolute URI, serialization of atom:logo
authors array of serialized atom:author objects, see person serialization below
contributors array of serialized atom:contributor objects, see person serialization below
links array of serialized atom:link objects
categories array of serialized atom:category objects
complete true if the feed is marked with fh:complete from RFC 5005
archive true if the feed is marked with fh:archive from RFC 5005
entries array of serialized atom:entry objects
extensions array of serialized extension objects (any element not in the Atom namespace)
attributes array of serialized extension attributes ( any attribute not in the Atom namespace )

Serializing org.apache.abdera.model.Entry

  Abdera abdera = new Abdera();
  Document<Entry> doc = ...
  Entry entry = doc.getRoot();
  Writer writer = abdera.getWriterFactory().getWriter("json");
  writer.writeTo(entry,System.out);
Field Description
id The atom:id value
title serialization of the atom:title
summary serialization of the atom:summary
rights serialization of the atom:rights
updated number of milliseconds since the epoch, serialization of the atom:updated
published number of milliseconds since the epoch, serialization of the atom:published
edited number of milliseconds since the epoch, serialization of the app:edited
authors array of serialized atom:author objects, see person serialization below
contributors array of serialized atom:contributor objects, see person serialization below
links array of serialized atom:link objects
categories array of serialized atom:category objects
extensions array of serialized extension objects (any element not in the Atom namespace)
attributes array of serialized extension attributes ( any attribute not in the Atom namespace )
inreplyto array of serialized thr:in-reply-to elements
replies array of serialized "replies" links with comment counts
licenses array of serialized "license" links

Serializing atom:category

Field Description
term atom:category/@term
label atom:category/@label
scheme atom:category/@scheme (absolute uri)
extensions array of serialized extension objects (any element not in the Atom namespace)
attributes array of serialized extension attributes ( any attribute not in the Atom namespace )
dir rtl or ltr if Atom Bidi Attribute extension is used
language in scope xml:lang
whitespace false if insignificant whitespace should be ignored. equivalent to xml:space

Serializing atom:generator

Field Description
version atom:generator/@version
uri atom:generator/@uri
value atom:generator/text()
dir rtl or ltr if Atom Bidi Attribute extension is used
language in scope xml:lang
whitespace false if insignificant whitespace should be ignored. equivalent to xml:space

Serializing atom:link

Field Description
href atom:link/@href
rel atom:link/@rel
hreflang atom:link/@hreflang
title atom:link/@title
length atom:link/@length
type atom:link/@type
extensions array of serialized extension objects (any element not in the Atom namespace)
attributes array of serialized extension attributes ( any attribute not in the Atom namespace )
dir rtl or ltr if Atom Bidi Attribute extension is used
language in-scope xml:lang
whitespace false if insignificant whitespace should be ignored. equivalent to xml:space

Serializing atom:person

Field Description
name atom:author/@name or atom:contributor/@name
email atom:author/@email or atom:contributor/@email
uri atom:author/@uri or atom:contributor/@uri (absolute uri)
extensions array of serialized extension objects (any element not in the Atom namespace)
attributes array of serialized extension attributes ( any attribute not in the Atom namespace )
dir rtl or ltr if Atom Bidi Attribute extension is used
language in-scope xml:lang
whitespace false if insignificant whitespace should be ignored. equivalent to xml:space

Serializing Atom Text constructs (e.g. atom:title, atom:summary, etc)

Field Description
type "text", "html", or "xhtml"
value string or xhtml hash
display string
dir rtl or ltr if Atom Bidi Attribute extension is used
language in-scope xml:lang
whitespace false if insignificant whitespace should be ignored. equivalent to xml:space
base in-scope xml:base

XHTML content is serialized as a structure of hash objects within the value field. For a displayable version, use the display field.

Serializing atom:content

Field Description
type "text", "html", "xhtml" or MIME media type
value string or xhtml hash
display string (only when type equals text, html or xhtml)
src atom:content/@src
dir rtl or ltr if Atom Bidi Attribute extension is used
language in-scope xml:lang
whitespace false if insignificant whitespace should be ignored. equivalent to xml:space
base in-scope xml:base

XHTML content is serialized as a structure of hash objects within the value field. For a displayable version, use the display field.

Serializing app:control

Field Description
draft true or false, app:control/app:draft

Serializing app:service

Field Description
workspaces array of serialized app:workspace objects
extensions array of serialized extension objects (any element not in the Atom namespace)
attributes array of serialized extension attributes ( any attribute not in the Atom namespace )

Serializing app:workspace

Field Description
collections array of serialized app:collection objects
title app:workspace/atom:title
extensions array of serialized extension objects (any element not in the Atom namespace)
attributes array of serialized extension attributes ( any attribute not in the Atom namespace )

Serializing app:collection

Field Description
href app:collection/@href
title app:collection/atom:title
accept array of MIME media types
categories array of serialized app:categories objects
extensions array of serialized extension objects (any element not in the Atom namespace)
attributes array of serialized extension attributes ( any attribute not in the Atom namespace )

Serializing app:categories

Field Description
fixed true or false, app:categories/@fixed
scheme app:categories/@scheme
categories array of serialized atom:category objects
extensions array of serialized extension objects (any element not in the Atom namespace)
attributes array of serialized extension attributes ( any attribute not in the Atom namespace )

Serializing thr:in-reply-to

Field Description
ref thr:in-reply-to/@ref
href thr:in-reply-to/@href
type thr:in-reply-to/@type
source thr:in-reply-to/@source

Serializing extension elements

Field Description
qname serialized QName object
dir rtl or ltr if Atom Bidi Attribute extension is used
language in-scope xml:lang
whitespace false if insignificant whitespace should be ignored. equivalent to xml:space
base in-scope xml:base
attributes array of serialized attributes
children array of serialized children

Serializing attributes

Field Description
qname serialized QName object
value string value

Serializing QName

Field Description
name QName localpart
ns QName namespace URI
prefix QName prefix

Accessing the serialized data

var feed = { json serialized feed }

document.write( feed.id );
document.write( new Date(feed.updated) );
document.write( feed.title.display );
document.write( feed.title.type );
document.write( feed.entries.length );

for (n = 0; n < feed.entries.length; n++) {
  entry = feed.entries[n];

  document.write( entry.id );
  document.write( entry.title.display );
  document.write( entry.title.type );
  document.write( entry.content.display );
  document.write( entry.content.type );

  for (i = 0; i < entry.links.length; i++) {
    link = entry.links[i];

    document.write( link.rel );
    document.write( link.href );
    document.write( link.title );
  }
}