Могу ли я подавать RSS в формате JSON? - PullRequest
17 голосов
/ 29 октября 2008

Я пишу RSS-канал (для удовольствия) и искал спецификации здесь .

RSS - это диалект XML. Все файлы RSS должны соответствовать спецификации XML 1.0, опубликованной на веб-сайте Консорциума World Wide Web (W3C).

Очевидно, это означает, что я не обслуживаю «чистый» RSS, если я выбрал опцию JSON. Тем не менее, если я буду соответствовать остальной спецификации, есть ли вероятность, что (настроенные) читатели смогут ее проанализировать?

Другими словами, если я соответствую спецификации, но использую JSON вместо XML - это пригодный для использования канал RSS?

редактировать Я не уверен, что ясно дал понять. Там нет XML вовлечен. Я хочу написать что-то похожее на RSS (то есть XML), используя вместо этого JSON. Очевидно, что читатели такого канала должны быть написаны, чтобы понять формат JSON. Мне было интересно, если это уже было сделано. Существуют ли службы, которые обслуживают канал таким образом? Существуют ли программы, которые могут объединять / понимать этот формат. Является ли спецификация RSS (без XML-части) полезной спецификацией в этом случае?

рг

{
"title":"example.com",
"link":"http://www.example.com/",
"description":"Awesome news about junk",
"items":[
    {
        "title":"An article",
        "link":"http://www.example.com/an-article",
        "descrition":"Some sample text here",
        "pubDate":"2008-10-27 11:06 EST",
        "author":"example author",
    },
    {
        "title":"Second",
        "link":"http://www.example.com/Seond",
        "descrition":"Some sample text here",
        "pubDate":"2008-10-25 23:20 EST",
        "author":"author mcauthor",
    },
    {
        "title":"third article",
        "link":"http://www.example.com/third-article",
        "descrition":"Some sample text here",
        "pubDate":"2008-10-25 23:18 EST",
        "author":"some other author",
    }
]
} 

Ответы [ 9 ]

21 голосов
/ 29 октября 2008

Нет, RSS - это формат на основе XML, а JSON - это другой язык, а не какой-то диалект. Читатели RSS не поймут JSON.

Ваш вопрос сродни вопросу «Могу ли я говорить по-французски по-китайски?»

14 голосов
/ 31 октября 2008

Я считаю, что это уже сделано.

Взгляните на это расширение jQuery: jFeed - парсер RSS / ATOM

jQuery.getFeed(options);

Опции:

  • URL:
  • данные:
  • успех

Пример: * ** 1022 тысячу двадцать одна * jQuery.getFeed({ url: 'rss.xml', success: function(feed) { alert(feed.title); } }); Обратите внимание, что в этом случае «feed» будет объектом javascript. Если вы хотите передать это с помощью JSON, вы можете просто использовать утилиту javascript JSON .

* 1 028 * Пример:
var myJSONText = JSON.stringify(feed);
9 голосов
/ 27 ноября 2008

Является ли спецификация RSS (без XML-части) полезной спецификацией в этом случае?

Если вы хотите изобрести еще один формат синдикации, я рекомендую использовать Atom в качестве основы. ИМХО, он намного чище, более согласован и имеет полезные функции, такие как надежные обновления прошлых элементов, делает различие между резюме и полным содержанием и т. Д.

Мне было интересно, было ли это уже сделано.

Flickr имеет выходной формат JSON . У них даже есть lolcode feed .

3 голосов
/ 25 мая 2017

Вы правы, что клиент , читающий фид, должен иметь пользовательскую поддержку независимо от особенностей вашего JSON. Поэтому вам нужно либо создать специальную программу чтения каналов, чтобы использовать эту информацию, либо кто-то должен будет предложить стандарт каналов JSON, и он должен быть широко принят.

Ну, я думаю, твои желания наконец-то были выполнены, друг!

Взгляните на JSON Feed . На момент написания статьи ему всего неделя, но он уже набирает обороты, и теперь поддерживается Feedly , Feedbin , News Explorer , NewsBlur , и все время добавляются другие.

Если бы мне пришлось выбирать стандарт для использования при создании JSON-версии RSS, я бы точно выбрал JSON Feed.

3 голосов
/ 31 октября 2008

Json.NET - http://james.newtonking.com/projects/json-net.aspx - имеет поддержку для преобразования любого XML-документа в JSON.

XmlDocument doc = new XmlDocument();

doc.LoadXml(@"<?xml version=""1.0"" standalone=""no""?>
<root>
  <person id=""1"">
    <name>Alan</name>
    <url>http://www.google.com</url>
  </person>
  <person id=""2"">
    <name>Louis</name>
    <url>http://www.yahoo.com</url>
  </person>
</root>");


string jsonText = JavaScriptConvert.SerializeXmlNode(doc);
//{
//  "?xml": {
//    "@version": "1.0",
//    "@standalone": "no"
//  },
//  "root": {
//    "person": [
//      {
//        "@id": "1",
//        "name": "Alan",
//        "url": "http://www.google.com"
//      },
//      {
//        "@id": "2",
//        "name": "Louis",
//        "url": "http://www.yahoo.com"
//      }
//    ]
//  }
//}

XmlDocument newDoc = (XmlDocument)JavaScriptConvert.DeerializeXmlNode(jsonText);

Assert.AreEqual(doc.InnerXml, newDoc.InnerXml);
2 голосов
/ 29 октября 2008

Существует множество способов сериализации RSS в JSON. Все они работают примерно одинаково: элементы и атрибуты становятся именами свойств, значения становятся значениями свойств и т. Д. См., Например, метод Пиюша Шаха *, который является реализацией .NET.

Преобразование произвольного XML в JSON с использованием XSLT достаточно просто, и вы можете найти полдюжины его примеров в Google.

Пока это делается последовательно, JavaScript, который может обрабатывать объектную модель, предназначенную для репликации структуры данных спецификации RSS, должен иметь возможность обрабатывать объектную модель, в которую десериализуется JSON.

Кому вы планируете отправить этот JSON? Это настоящий вопрос.

1 голос
/ 07 ноября 2009

Что ж, если вы разрабатываете какое-либо приложение на javascript, вам может потребоваться получить любые RSS-каналы в формате JSON, чтобы решить проблему междоменных запросов. Существует надежное решение от Google, которое конвертирует любые RSS в JSON. Для любителей jQuery есть универсальный плагин конвертера RSS в JSON .

Пример:

$.jGFeed('http://twitter.com/statuses/user_timeline/26767000.rss',
  function(feeds){

    // feeds is a javascript object with RSS content

  }, 10);
0 голосов
/ 26 февраля 2019

Существуют ли программы, которые могут объединять / понимать этот формат.

Вы можете использовать XSLT 3.0 для преобразования XML в JSON и обратно в XML. Более подробную информацию о том, как выполнить преобразования в JSON здесь:

https://www.xml.com/articles/2017/02/14/why-you-should-be-using-xslt-30/.

0 голосов
/ 28 июня 2017

Я знаю, что это довольно старый вопрос, и, может быть, сейчас не имеет значения.

Тем не менее. Я бы посоветовал всем, кто хочет опубликовать RSS-канал в JSON, следует использовать новый формат, который быстро завоевывает популярность; JSONFeed (https://jsonfeed.org).

...