Могу ли я обслуживать RSS в JSON?

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

RSS is a dialect of XML. All RSS files must conform to the XML 1.0 specification, as published on the World Wide Web Consortium (W3C) website.

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

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

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

rg

{
"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",
    }
]
} 

Увы, нет, JSON было слишком поздно. +1 во всяком случае, просто за нестандартное мышление.

Tim Post 07.11.2009 16:04
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
21
1
28 777
9
Перейти к ответу Данный вопрос помечен как решенный

Ответы 9

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

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

Значит, нет согласованного стандарта для JSON, который будет действовать как RSS-канал (не настоящий RSS, а что-то, что работает на той же идее)? Похоже, это было бы хорошо. RSS2.0 может стать хорошим началом.

Doug Miller 29.10.2008 15:49

@ Гипозавр, я думаю, мы приближаемся.

Jacob 22.05.2017 17:25

Я хотел бы обслуживать оба и в конечном итоге обслуживать JSON только тогда, когда отрасль догонит

benbyford 07.11.2018 14:30

Проблема с JSON в том, что он не может передавать поток, как XML. Но это не значит, что вы не можете просто запустить RSS через XSLT 3.0 и [преобразовать его (stackoverflow.com/a/54882328/712334) в JSON.

Josh Habdas 26.02.2019 12:35

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

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

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

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

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

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

jQuery.getFeed(options);

Опции:

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

Пример:

jQuery.getFeed({
       url: 'rss.xml',
       success: function(feed) {
           alert(feed.title);
       }
   });

Обратите внимание, что в этом случае «канал» будет объектом javascript. Если вы хотите передать это с помощью JSON, вы можете просто использовать утилита javascript JSON.

Пример:

var myJSONText = JSON.stringify(feed);

+1 за подсказку jFeed. Сейчас на Github и регулярно поддерживается github.com/jfhovinne/jFeed

johnhunter 01.03.2011 15:23

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

Is the RSS spec (sans the XML part) a useful spec to conform to in this case?

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

I was wondering if this had been done already.

У Flickr есть Формат вывода JSON. У них даже есть лолкод фид.

Проголосовал только за ссылку на лолкод, из-за чего я непрофессионально хихикнул.

TRiG 27.11.2009 04:25

Что ж, если вы разрабатываете какое-то приложение 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);
Ответ принят как подходящий

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

Что ж, думаю, твои желания наконец-то исполнились, друг!

Взгляните на Канал JSON. На момент написания этой статьи ему всего около недели, но он уже набирает обороты, поскольку его постоянно поддерживают Feedly, Feedbin, Обозреватель новостей, NewsBlur и многие другие.

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

С тех пор, как я опубликовал это, поддержка была добавлена ​​и в Feedly.

jlbang 22.06.2017 23:42

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

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

Are there programs that can aggregate/understand this format.

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

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

Другие вопросы по теме