22

我正在写一个 RSS 提要(为了好玩),并在此处查看规范。

RSS 是 XML 的一种方言。所有 RSS 文件都必须符合万维网联盟 (W3C) 网站上发布的 XML 1.0 规范。

显然,这意味着如果我选择 JSON 选项,我不会提供“纯”RSS。也就是说,如果我符合规范的其余部分,(定制的)读者是否可能能够解析它?

换句话说,如果我符合规范,但使用 JSON 而不是 XML,它是一个可用的 RSS 提要吗?

编辑 我不确定我是否说清楚了。不涉及 XML。我想改用 JSON 编写类似于 RSS(即 XML)的东西。显然,需要编写此类提要的读者才能理解 JSON 格式。我想知道这是否已经完成。是否有以这种方式提供 Feed 的服务?是否有可以聚合/理解这种格式的程序。在这种情况下,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",
    }
]
} 
4

9 回答 9

22

不,RSS 是一种基于 XML 的格式,而 JSON 是一种不同的语言,而不是某种方言。RSS 阅读器不会理解 JSON。

你的问题类似于问“我可以用中文说法语吗?”

于 2008-10-29T12:24:50.553 回答
14

我相信这已经完成了。

看看这个 jQuery 扩展: jFeed - RSS/ATOM 提要解析器

jQuery.getFeed(options);

选项:

  • 网址:
  • 数据:
  • 成功:

例子:

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

请注意,在这种情况下,'feed' 将是一个 javascript 对象。如果您想使用 JSON 传递它,您可以使用javascript JSON 实用程序

例子:

var myJSONText = JSON.stringify(feed);
于 2008-10-30T21:00:50.077 回答
9

在这种情况下,RSS 规范(没有 XML 部分)是一个有用的规范吗?

如果您想发明另一种联合格式,我建议使用 Atom 作为基础。恕我直言,它具有更简洁、更一致的设计,并具有有用的功能,例如对过去项目的可靠更新、区分摘要和完整内容等。

我想知道这是否已经完成。

Flickr 有JSON 输出格式。他们甚至有lolcode 提要

于 2008-11-26T23:16:11.340 回答
7

您是对的,阅读提要的客户端必须对您的 JSON 的任何细节有自定义支持。因此,您要么需要制作自定义提要阅读器来使用该信息,要么必须有人提出 JSON 提要标准,并且必须被广泛采用。

好吧,我想你的愿望终于得到满足了,朋友!

看看JSON 提要。在撰写本文时,它只有大约一周的历史,但它已经开始加速,现在已经得到了FeedlyFeedbinNews ExplorerNewsBlur的支持,并且一直在添加更多内容。

如果在生成 RSS 的 JSON 版本时必须选择要使用的标准,我肯定会选择 JSON Feed。

于 2017-05-25T16:38:24.130 回答
3

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);
于 2008-10-30T21:05:55.603 回答
2

有很多不同的方法可以将 RSS 序列化为 JSON。所有这些都以几乎相同的方式工作:元素和属性成为属性名称,值成为属性值,等等。参见Piyush Shah 的技术,例如,它是一个 .NET 实现。

使用 XSLT 将任意 XML 转换为 JSON 非常简单,您可以在 Google 上找到六个这样的示例。

只要始终如一地这样做,可以处理旨在复制 RSS 规范的数据结构的对象模型的 JavaScript 应该能够处理 JSON 反序列化为的对象模型。

您打算将此 JSON 发送给谁?这才是真正的问题。

于 2008-10-29T19:39:50.270 回答
1

好吧,如果您正在开发一些 javascript 应用程序,您可能希望以 JSON 格式获取任何 RSS 提要,以克服跨域查询问题。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);
于 2009-11-07T12:55:09.783 回答
1

我知道这是一个相当古老的问题,现在可能无关紧要。

然而。我建议任何希望在 JSON 中发布类似 RSS 的提要的人都应该使用一种正在迅速被采用的新格式;JSONFeed ( https://jsonfeed.org )。

于 2017-06-28T16:48:10.560 回答
0

是否有可以聚合/理解这种格式的程序。

您可以使用XSLT 3.0将 XML 转换为 JSON 并再次转换回 XML。有关如何在此处完成对 JSON 的转换的更多信息:

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

于 2019-02-26T09:32:15.320 回答