fboës - Der Blog

JSON Feed: Endlich ein Standard für Newsfeeds mit JSON

Schon lange hat mich die Idee umgetrieben, Newsfeeds statt mit dem etwas sperrigen XML (wie bei RSS und ATOM) lieber in JSON auszuliefern.

Nun hat Manton Reece zusammen mit Brent Simmons ebenfalls die Idee eines JSON-Newsfeeds aufgegriffen, und einen eigenen Standard entwickelt: JSON Feed.

Warum JSON und kein XML?

JSON hat mehrere Vorteile gegenüber XML. Vorneweg ist das Parsing deutlich einfacher, da JSON Sprachkonstrukte abbildet, die es in fast jeder Programmiersprache gibt: Objekte, Arrays, Strings und Zahlen. XML dagegen benötigt immer eine Form von komplexer Übersetzungsvorschrift, um Knoten, Attribute und sich wiederholende Tag-Namen als Konstrukt abzubilden.

In PHP ist das Lesen von JSON so einfach wie der Aufruf von json_decode(); in Javascript übernimmt JSON.parse() diese Aufgabe; in beiden Fällen steht danach eine schon aus dem JSON ablesbare Struktur aus Objekten, Arrays, Strings und Zahlen zu Verfügung.

Da JSON direkt durch Javascript interpretiert werden kann, kann es auch direkt vom Browser ausgeführt werden. Es entfällt die Notwendigkeit, zum Parsen des Newsfeeds auf serverseitige Skripte zurückgreifen zu müssen.

Historische Alternativen

Die Idee, einen Newsfeeds mit JSON auszugeben, gab es schon öfter:

  • JSON-RSS: Die Struktur wurde dabei von RSS übernommen, aber statt mit XML als JSON ausgegeben. Dummerweise hat sich dazu aber nie ein Standard etabliert.
  • Slack-JSON: War zwar ursprünglich nicht für Newsfeeds gedacht, erfüllt diesen Zweck aber eigentlich sehr gut. Dummerweise wurde dies aber ebenfalls nie als Standard für Newsfeeds aufgefasst und hat dementsprechend wenig Verbreitung.

Aktuelle Unterstützung

JSON Feed wird u.a. von Mantons Service micro.blog unterstützt, zudem gibt es bereits ein Plugin für Wordpress, Jekyll, Movable Type und das Craft CMS. Weitere Plugins für JSON Feed entstehen in schneller Folge.

Da ich persönlich sehr an JSON als Schnittstellenformat glaube, habe ich schnell für das Blogopohon eine Option hinzugefügt, so dass alle Blogophon-Blogs in Zukunft auch JSON-Feeds erzeugen können. Ein Beispiel für den JSON Feed des Blogohons findet sich hier.

Erweiterungen für JSON Feed

Der JSON Feed Standard erlaubt von vorneherein Erweiterungen. Diese sind dann zwar nicht standardisiert, können aber benötigte Funktionalität bereitstellen, ohne zu Namensraum-Kollisionen mit späteren Erweiterungen des Standards zu führen.

Natürlich habe ich auch gleich zwei kleine Erweiterung für mich eingebaut:

In jedem item gibt es ein kleines GeoJSON-Geometry-Objekt, mit dem sich Koordinaten übertragen lassen:

"_geo": {
  "about": "http://geojson.org/#GeometryObject",
  "type": "Point",
  "coordinates": [125.6, 10.1]
}

Aktuell gibt es bereits Überlegungen, einen Sprachkürzel in JSON-Feed einzuführen. Bis dahin behelfe ich mir wie folgt:

"_language": {
  "about": "https://github.com/brentsimmons/JSONFeed/issues/40",
  "language": "en"
}

Vermutlich werden Sprachkürzel in naher Zukunft dann so aussehen:

"language": "en"

Fazit

Über die Sinnhaftigkeit von Newsfeeds wurde bereits hinlänglich nachgedacht.

JSON Feed sieht wie ein würdiger Nachfolger für RSS und ATOM aus, der an Stelle von XML das leichtgewichtige JSON verwendet. Aktuell hat JSON Feed noch nicht die selben Möglichkeiten Daten zu transportieren, und auch die Unterstützung von Feed-Readern muss erst wachsen. Für interne Schnittstellen ist dies aber allemal ein sehr guter Standard, der sich augenscheinlich auch inzwischen wie ein Lauffeuer in der Blogosphäre ausdehnt.

Update: Da Erweiterungen Objekte sein müssen, habe ich meinen Absatz über Sprachkürzel angepasst.

Zur Übersichtsseite