JSON-RSS: Unterschied zwischen den Versionen

Aus Imperia Support Wiki
(Implemenation: JSON-RSS)
(Implemenation: JSON-RSS)
Zeile 56: Zeile 56:
 
Generelle Regeln zum Umformen von XML in JSON:
 
Generelle Regeln zum Umformen von XML in JSON:
  
 +
* Das Root-Element des XMLs entfällt, und ist das Root-JSON-Objekt.
 
* Tags, die mehrfach vorkommen, werden als Array mit ihrem Tagnamen in der Mehrzahl geschrieben, z.B. <item> als "items"
 
* Tags, die mehrfach vorkommen, werden als Array mit ihrem Tagnamen in der Mehrzahl geschrieben, z.B. <item> als "items"
 
* Tags mit Attributen, aber ohne Inhalt, werden als Objekt geschrieben, so dass jedes Attribut eine Objekteigenschaft ist, siehe <enclosure>
 
* Tags mit Attributen, aber ohne Inhalt, werden als Objekt geschrieben, so dass jedes Attribut eine Objekteigenschaft ist, siehe <enclosure>

Version vom 15. August 2011, 17:42 Uhr

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"

Generelle Regeln zum Umformen von XML in JSON:

  • Das Root-Element des XMLs entfällt, und ist das Root-JSON-Objekt.
  • Tags, die mehrfach vorkommen, werden als Array mit ihrem Tagnamen in der Mehrzahl geschrieben, z.B. <item> als "items"
  • Tags mit Attributen, aber ohne Inhalt, werden als Objekt geschrieben, so dass jedes Attribut eine Objekteigenschaft ist, siehe <enclosure>
  • Tags mit Namensräumen werden an Stelle des ':' mit '_' geschrieben, z.B. <geo:fields> als "geo_fields"

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));

?>