【问题标题】:Can I serve RSS in JSON?我可以在 JSON 中提供 RSS 吗?
【发布时间】:2008-10-29 12:19:38
【问题描述】:

我正在编写一个 RSS 提要(为了好玩)并且正在查看规范 here

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

【问题讨论】:

  • 唉,不,JSON 有点太晚了。无论如何 +1,只是为了跳出框框思考。

标签: xml json rss


【解决方案1】:

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

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

【讨论】:

  • 所以没有就 JSON 充当 RSS 提要的标准达成一致(不是实际的 RSS,而是基于相同想法的东西)?似乎拥有它会是一件好事。 RSS2.0 可能是一个好的开始。
  • @Hyposaurus 我想we're getting there
  • 我很乐意同时提供两种服务,并且最终只在行业追赶时提供 JSON 服务
  • JSON 的问题是它不能像 XML 一样流式传输。但这并不意味着您不能简单地通过 XSLT 3.0 运行 RSS 并 [将其 (stackoverflow.com/a/54882328/712334) 转换为 JSON。
【解决方案2】:

我相信这已经完成了。

看看这个 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 utility

例子:

var myJSONText = JSON.stringify(feed);

【讨论】:

【解决方案3】:

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

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

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

Flickr 有JSON output format。他们甚至有lolcode feed

【讨论】:

  • 投票只是为了链接到lolcode,这让我笑得最不专业。
【解决方案4】:

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

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

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

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

【讨论】:

  • 自从我发布此内容后,Feedly 也已添加支持。
【解决方案5】:

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

【讨论】:

    【解决方案6】:

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

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

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

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

    【讨论】:

      【解决方案7】:

      好吧,如果您正在开发一些 javascript 应用程序,您可能希望将任何 RSS 提要作为 JSON 获取,以克服跨域查询问题。 Google 提供了一个可靠的解决方案,可以将任何 RSS 转换为 JSON。对于 jQuery 爱好者,有一个 universal RSS to JSON converter plugin

      例子:

      $.jGFeed('http://twitter.com/statuses/user_timeline/26767000.rss',
        function(feeds){
      
          // feeds is a javascript object with RSS content
      
        }, 10);
      

      【讨论】:

        【解决方案8】:

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

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

        【讨论】:

          【解决方案9】:

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

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2019-08-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多