<?xml-stylesheet type="text/xsl" href="xml2json.xslt"?> <reports xmlns="http://www.w3.org/2005/Atom" xmlns:georss="http://www.georss.org/georss"> <entry> <id>tag:open311.sfgov.org,2010-04-15:/dev/V1/reports/637619.xml</id> <title>A large tree branch is blocking the road</title> <updated>2010-04-13T18:30:02-05:00</updated> <link rel="self" href="http://open311.sfgov.org/dev/V1/reports/637619.xml"/> <author><name>John Doe</name></author> <georss:point>40.7111 -73.9565</georss:point> <category label="Damaged tree" term="tree-damage" scheme="https://open311.sfgov.org/dev/V1/categories/006.xml">006</category> <content type="xml" xmlns="http://open311.org/spec/georeport-v1"> <report_id>637619</report_id> <address>1600 Market St, San Francisco, CA 94103</address> <description>A large tree branch is blocking the road</description> <status>created</status> <status_notes /> <policy>The City will inspect and require the responsible party to correct within 24 hours and/or issue a Correction Notice or Notice of Violation of the Public Works Code</policy> </content> </entry> <entry> <id>tag:open311.sfgov.org,2010-04-15:/dev/V1/reports/637620.xml</id> <title>A large tree branch is blocking the road</title> <updated>2010-04-13T18:30:02-05:00</updated> <link rel="self" href="http://open311.sfgov.org/dev/V1/reports/637620.xml"/> <author><name>John Doe</name></author> <georss:point>40.7111 -73.9565</georss:point> <category label="Damaged tree" term="tree-damage" scheme="https://open311.sfgov.org/dev/V1/categories/006.xml">006</category> <content type="xml" xmlns="http://open311.org/spec/georeport-v1"> <report_id>637620</report_id> <address>56 Market St, San Francisco, CA 94103</address> <description>A large tree branch is blocking the road</description> <status>created</status> <status_notes /> <policy>The City will inspect and require the responsible party to correct within 24 hours and/or issue a Correction Notice or Notice of Violation of the Public Works Code</policy> </content> </entry> <entry> <id>tag:open311.sfgov.org,2010-04-15:/dev/V1/reports/637621.xml</id> <title>A large tree branch is blocking the road</title> <updated>2010-04-13T18:30:02-05:00</updated> <link rel="self" href="http://open311.sfgov.org/dev/V1/reports/637621.xml"/> <author><name>John Doe</name></author> <georss:point>40.7111 -73.9565</georss:point> <category label="Damaged tree" term="tree-damage" scheme="https://open311.sfgov.org/dev/V1/categories/006.xml">006</category> <content type="xml" xmlns="http://open311.org/spec/georeport-v1"> <report_id>637621</report_id> <address>1800 Market St, San Francisco, CA 94103</address> <description>A large tree branch is blocking the road</description> <status>created</status> <status_notes /> <policy>The City will inspect and require the responsible party to correct within 24 hours and/or issue a Correction Notice or Notice of Violation of the Public Works Code</policy> </content> </entry> </reports>
The Badgerfish convention is a true JSON representation of XML in the sense that it also accommodates tag attributes. Unfortunately, this also adds a bit of overhead to the JSON syntax.
({
"reports": {
"entry": [{
"id": {
"$": "tag:open311.sfgov.org,2010-04-15:\/dev\/V1\/reports\/637619.xml"
},
"title": {
"$": "A large tree branch is blocking the road"
},
"updated": {
"$": "2010-04-13T18:30:02-05:00"
},
"link": {
"@rel": "self",
"@href": "http:\/\/open311.sfgov.org\/dev\/V1\/reports\/637619.xml"
},
"author": {
"name": {
"$": "John Doe"
}
},
"georss:point": {
"$": "40.7111 -73.9565"
},
"category": {
"$": "006",
"@label": "Damaged tree",
"@term": "tree-damage",
"@scheme": "https:\/\/open311.sfgov.org\/dev\/V1\/categories\/006.xml"
},
"content": {
"report_id": {
"$": "637619"
},
"address": {
"$": "1600 Market St, San Francisco, CA 94103"
},
"description": {
"$": "A large tree branch is blocking the road"
},
"status": {
"$": "created"
},
"status_notes": [],
"policy": {
"$": "The City will inspect and require the responsible party to correct within 24 hours and\/or issue a Correction Notice or Notice of Violation of the Public Works Code"
},
"@type": "xml"
}
},
{
"id": {
"$": "tag:open311.sfgov.org,2010-04-15:\/dev\/V1\/reports\/637620.xml"
},
"title": {
"$": "A large tree branch is blocking the road"
},
"updated": {
"$": "2010-04-13T18:30:02-05:00"
},
"link": {
"@rel": "self",
"@href": "http:\/\/open311.sfgov.org\/dev\/V1\/reports\/637620.xml"
},
"author": {
"name": {
"$": "John Doe"
}
},
"georss:point": {
"$": "40.7111 -73.9565"
},
"category": {
"$": "006",
"@label": "Damaged tree",
"@term": "tree-damage",
"@scheme": "https:\/\/open311.sfgov.org\/dev\/V1\/categories\/006.xml"
},
"content": {
"report_id": {
"$": "637620"
},
"address": {
"$": "56 Market St, San Francisco, CA 94103"
},
"description": {
"$": "A large tree branch is blocking the road"
},
"status": {
"$": "created"
},
"status_notes": [],
"policy": {
"$": "The City will inspect and require the responsible party to correct within 24 hours and\/or issue a Correction Notice or Notice of Violation of the Public Works Code"
},
"@type": "xml"
}
},
{
"id": {
"$": "tag:open311.sfgov.org,2010-04-15:\/dev\/V1\/reports\/637621.xml"
},
"title": {
"$": "A large tree branch is blocking the road"
},
"updated": {
"$": "2010-04-13T18:30:02-05:00"
},
"link": {
"@rel": "self",
"@href": "http:\/\/open311.sfgov.org\/dev\/V1\/reports\/637621.xml"
},
"author": {
"name": {
"$": "John Doe"
}
},
"georss:point": {
"$": "40.7111 -73.9565"
},
"category": {
"$": "006",
"@label": "Damaged tree",
"@term": "tree-damage",
"@scheme": "https:\/\/open311.sfgov.org\/dev\/V1\/categories\/006.xml"
},
"content": {
"report_id": {
"$": "637621"
},
"address": {
"$": "1800 Market St, San Francisco, CA 94103"
},
"description": {
"$": "A large tree branch is blocking the road"
},
"status": {
"$": "created"
},
"status_notes": [],
"policy": {
"$": "The City will inspect and require the responsible party to correct within 24 hours and\/or issue a Correction Notice or Notice of Violation of the Public Works Code"
},
"@type": "xml"
}
}]
}
});
The Parker convention ignores XML attributes, so it generates much leaner and cleaner JSON. However, there are a few places where XML attributes are used in the core Atom schema for a report: metadata about the associated category as well as the URI and media type for associated media included in the <link> tags. The metadata for categories is probably not essential as long as the category_id is included (the category metadata is just denormalization).
({
"reports": [{
"id": "tag:open311.sfgov.org,2010-04-15:/dev/V1/reports/637619.xml",
"title": "A large tree branch is blocking the road",
"updated": "2010-04-13T18:30:02-05:00",
"link": null,
"author": {
"name": "John Doe"
},
"georss:point": "40.7111 -73.9565",
"category": 006,
"content": {
"report_id": 637619,
"address": "1600 Market St, San Francisco, CA 94103",
"description": "A large tree branch is blocking the road",
"status": "created",
"status_notes": null,
"policy": "The City will inspect and require the responsible party to correct within 24 hours and/or issue a Correction Notice or Notice of Violation of the Public Works Code"
}
},
{
"id": "tag:open311.sfgov.org,2010-04-15:/dev/V1/reports/637620.xml",
"title": "A large tree branch is blocking the road",
"updated": "2010-04-13T18:30:02-05:00",
"link": null,
"author": {
"name": "John Doe"
},
"georss:point": "40.7111 -73.9565",
"category": 006,
"content": {
"report_id": 637620,
"address": "56 Market St, San Francisco, CA 94103",
"description": "A large tree branch is blocking the road",
"status": "created",
"status_notes": null,
"policy": "The City will inspect and require the responsible party to correct within 24 hours and/or issue a Correction Notice or Notice of Violation of the Public Works Code"
}
},
{
"id": "tag:open311.sfgov.org,2010-04-15:/dev/V1/reports/637621.xml",
"title": "A large tree branch is blocking the road",
"updated": "2010-04-13T18:30:02-05:00",
"link": null,
"author": {
"name": "John Doe"
},
"georss:point": "40.7111 -73.9565",
"category": 006,
"content": {
"report_id": 637621,
"address": "1800 Market St, San Francisco, CA 94103",
"description": "A large tree branch is blocking the road",
"status": "created",
"status_notes": null,
"policy": "The City will inspect and require the responsible party to correct within 24 hours and/or issue a Correction Notice or Notice of Violation of the Public Works Code"
}
}]
});
(Based on GML) See GeoRSS.org
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"
xmlns:georss="http://www.georss.org/georss"
xmlns:gml="http://www.opengis.net/gml">
<title>Earthquakes</title>
<subtitle>International earthquake observation labs</subtitle>
<link href="http://example.org/"/>
<updated>2005-12-13T18:30:02Z</updated>
<author>
<name>Dr. Thaddeus Remor</name>
<email>tremor@quakelab.edu</email>
</author>
<id>urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6</id>
<entry>
<title>M 3.2, Mona Passage</title>
<link href="http://example.org/2005/09/09/atom01"/>
<id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id>
<updated>2005-08-17T07:02:32Z</updated>
<summary>We just had a big one.</summary>
<georss:where>
<gml:Point>
<gml:pos>45.256 -71.92</gml:pos>
</gml:Point>
</georss:where>
</entry>
</feed>
See GeoJSON.org
{ "type": "FeatureCollection",
"features": [
{ "type": "Feature",
"geometry": {"type": "Point", "coordinates": [102.0, 0.5]},
"properties": {"prop0": "value0"}
},
{ "type": "Feature",
"geometry": {
"type": "LineString",
"coordinates": [
[102.0, 0.0], [103.0, 1.0], [104.0, 0.0], [105.0, 1.0]
]
},
"properties": {
"prop0": "value0",
"prop1": 0.0
}
},
{ "type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [
[ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0],
[100.0, 1.0], [100.0, 0.0] ]
]
},
"properties": {
"prop0": "value0",
"prop1": {"this": "that"}
}
}
]
}