JSON-RSS

Aus Imperia Support Wiki

Version vom 19. Juli 2017, 13:38 Uhr von Nlippoldt (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Idee: Ein Nachrichtenaustauschformat analog zu RSS, aber leichtgewichtiger zu parsen.

Implemenation: JSON-RSS

Datei-Endung: .jrss

MIME-Type: application/rss+json

Codebeispiel:

{
    "version":"2.0",
    "channel":
    {
        "title":"TITLE",
        "link":"http:\/\/example.com\/",
        "description":"A test",
        "lastBuildDate":"Mon, 04 Aug 2011 16:50:00 +0000",
        "pubDate":"Mon, 04 Aug 2011 16:45:00 +0000",
        "items":
        [
            {
                "guid":"1",
                "title":"Example entry",
                "link":"http:\/\/example.com\/test",
                "description":"This test<br />contains HTML.",
                "pubDate":"Mon, 04 Aug 2011 16:45:00 +0000",
                "enclosure":
                {
                    "url":"http:\/\/example.com\/file.mp3",
                    "length":"123456789",
                    "type":"audio\/mpeg"
                }
                "categories":
                [
                    "test"
                ]
            },
            {
                "guid":"2",
                "title":"Another example entry",
                "link":"This test does not contain HTML.",
                "description":"http:\/\/example.com\/another_test",
                "pubDate":"Mon, 04 Aug 2011 17:25:00 +0000"
            }
        ]
    }
}

Besonderheiten sind:

  • Die RSS-Versionsnummer wird eine eigenständige Eigenschaft
  • <guid> wird immer angenommen mit isPermalink="false"

Es gibt generelle Regeln zum Umformen von XML in JSON.

Generierung per PHP z.B.

<?php

    $rss = (object)array(
        'version' => '2.0',
        'channel' => (object)array(
            'title' => 'TITLE',
            'link' => 'http://example.com/',
            'description' => 'A test',
            'lastBuildDate' => 'Mon, 04 Aug 2011 16:50:00 +0000',
            'pubDate' => 'Mon, 04 Aug 2011 16:45:00 +0000',
            'items' => array(
                (object)array(
                    'guid' => '1',
                    'title' => 'Example entry',
                    'link' => 'http://example.com/test',
                    'description' => 'This test<br />contains HTML.',
                    'pubDate' => 'Mon, 04 Aug 2011 16:45:00 +0000',
                    'enclosure' => (object)array(
                        'url'=>'http://example.com/file.mp3',
                        'length'=>'123456789',
                        'type'=>'audio/mpeg',
                    ),
                    'categories' => array('test'),
                ),
                (object)array(
                    'guid' => '2',
                    'title' => 'Another example entry',
                    'link' => 'This test does not contain HTML.',
                    'description' => 'http://example.com/another_test',
                    'pubDate' => 'Mon, 04 Aug 2011 17:25:00 +0000',
                ),
            ),
        ),
    );
    
    echo(json_encode($rss));

?>