Я пишу 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",
}
]
}





Нет, RSS - это формат на основе XML, а JSON - это другой язык, а не какой-то диалект. Читатели RSS не понимают JSON.
Ваш вопрос похож на вопрос: «Могу ли я говорить по-французски по-китайски?»
Значит, нет согласованного стандарта для JSON, который будет действовать как RSS-канал (не настоящий RSS, а что-то, что работает на той же идее)? Похоже, это было бы хорошо. RSS2.0 может стать хорошим началом.
@ Гипозавр, я думаю, мы приближаемся.
Я хотел бы обслуживать оба и в конечном итоге обслуживать JSON только тогда, когда отрасль догонит
Проблема с JSON в том, что он не может передавать поток, как XML. Но это не значит, что вы не можете просто запустить RSS через XSLT 3.0 и [преобразовать его (stackoverflow.com/a/54882328/712334) в JSON.
Существует множество способов сериализации RSS в JSON. Все они работают примерно одинаково: элементы и атрибуты становятся именами свойств, значения становятся значениями свойств и т. д. См., Например, технику Пиюш Шаха, которая является реализацией .NET.
Преобразовать произвольный XML в JSON с помощью XSLT достаточно просто, и вы можете найти с полдюжины примеров в Google.
Пока это выполняется последовательно, JavaScript, который может обрабатывать объектную модель, предназначенную для репликации структуры данных спецификации RSS, должен иметь возможность обрабатывать объектную модель, в которую десериализуется JSON.
Кому вы собираетесь отправить этот JSON? Это настоящий вопрос.
Я считаю, что это уже сделано.
Взгляните на это расширение jQuery: jFeed - парсер RSS / ATOM каналов
jQuery.getFeed(options);
Опции:
Пример:
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
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. У них даже есть лолкод фид.
Проголосовал только за ссылку на лолкод, из-за чего я непрофессионально хихикнул.
Что ж, если вы разрабатываете какое-то приложение 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.
Я знаю, что это довольно старый вопрос, и, возможно, сейчас он неуместен.
Тем не мение. Я бы посоветовал всем, кто хочет опубликовать 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/.
Увы, нет, JSON было слишком поздно. +1 во всяком случае, просто за нестандартное мышление.