Могу ли я служить RSS в JSON?
Я пишу RSS-канал (для удовольствия) и смотрел на spec здесь.
RSS - это диалект XML. Все файлы RSS должны соответствовать спецификации XML 1.0, как опубликовано на веб-сайте консорциума World Wide Web (W3C).
Очевидно, это означает, что я не использую "чистый" 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",
}
]
}
Ответы
Ответ 1
Я считаю, что это уже сделано.
Взгляните на это расширение jQuery: jFeed - RSS/ATOM feed parser
jQuery.getFeed(options);
Параметры:
Пример:
jQuery.getFeed({
url: 'rss.xml',
success: function(feed) {
alert(feed.title);
}
});
Обратите внимание, что в этом случае "feed" будет javascript-объектом. Если вы хотите передать это с помощью JSON, вы можете просто использовать утилиту javascript JSON.
Пример:
var myJSONText = JSON.stringify(feed);
Ответ 2
Нет, RSS - это формат на основе XML, а JSON - это другой язык, а не какой-то диалект. Читатели RSS не поймут JSON.
Ваш вопрос сродни заданию "Могу ли я говорить по-французски по-китайски?"
Ответ 3
Является ли спецификацией RSS (без части XML) полезной спецификацией в этом случае?
Если вы хотите изобрести еще один формат синдикации, я рекомендую использовать Atom в качестве базы. IMHO имеет намного более чистый, более последовательный дизайн и обладает полезными функциями, такими как надежные обновления прошлых элементов, делает различие между резюме и полным контентом и т.д.
Мне было интересно, было ли это уже сделано.
Flickr имеет формат вывода JSON. У них даже есть lolcode feed.
Ответ 4
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);
Ответ 5
Вы правы, что клиент, читающий фид, должен иметь пользовательскую поддержку для любых деталей вашего JSON. Таким образом, вам нужно либо настроить пользовательский читатель каналов, чтобы использовать эту информацию, либо кто-то должен был бы предложить стандарт подачи JSON, и его нужно было бы широко применять.
Ну, я думаю, ваши желания наконец-то были встречены, друг!
Посмотрите JSON Feed. На момент написания этой статьи было всего около недели, но она уже набирает обороты, теперь поддерживается Feedly, Feedbin, News Explorer, NewsBlur и все время добавляется все время.
Если бы мне пришлось выбирать стандарт, который будет использоваться при создании JSON-версии RSS, я бы наверняка выбрал JSON Feed.
Ответ 6
Существует несколько способов сериализации RSS в JSON. Все они работают примерно так же: элементы и атрибуты становятся именами свойств, значения становятся значениями свойств и т.д. См. техника Пиюша Шаха, например, реализация .NET.
Преобразование произвольного XML в JSON с использованием XSLT достаточно просто, чтобы вы могли найти полдюжины его примеров в Google.
Пока это выполняется последовательно, JavaScript, который может обрабатывать объектную модель, предназначенную для репликации структуры данных спецификации RSS, должен иметь возможность обрабатывать объектную модель, которую десериализует JSON.
Кому вы планируете отправить этот JSON? Это реальный вопрос.
Ответ 7
Хорошо, если вы разрабатываете какое-то приложение для 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);
Ответ 8
Я знаю, что это довольно старый вопрос, и, возможно, сейчас он не имеет значения.
Однако. Я хотел бы предложить любому, кто хочет опубликовать RSS-подобный фид в JSON, должен использовать новый формат, который быстро набирает обороты; JSONFeed (https://jsonfeed.org).