2008-10-29 17 views
15

Estoy escribiendo un feed RSS (por diversión) y estaba buscando en la especificación here.¿Puedo servir RSS en JSON?

RSS es un dialecto de XML. Todos los archivos RSS deben cumplir con la especificación XML 1.0, tal como se publicó en el sitio web del World Wide Web Consortium (W3C).

Obviamente, esto significa que no estoy sirviendo RSS 'puro' si elijo la opción JSON. Dicho esto, si me ajusto al resto de las especificaciones, ¿es probable que los lectores (personalizados) puedan analizarlo?

Para decirlo de otra manera, si me atengo a la especificación, pero usando JSON en lugar de XML ¿es una fuente RSS utilizable?

editar No estoy seguro de que me aclarara. No hay XML involucrado. Quiero escribir algo similar a RSS (que es XML) utilizando JSON en su lugar. Obviamente, los lectores de dicho feed deberían estar escritos para comprender el formato JSON. Me preguntaba si esto ya se había hecho. ¿Hay servicios que sirven un feed de esta manera? ¿Hay programas que puedan agregar/comprender este formato? ¿Es la especificación RSS (sin la parte XML) una especificación útil para cumplir en este caso?

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

Por desgracia, no, JSON fue un poco tarde. +1 de todos modos, solo para pensar de forma original. –

Respuesta

14

Creo que esto ya se ha hecho.

Echa un vistazo a esta extensión de jQuery: jFeed - RSS/ATOM feed parser

jQuery.getFeed(options); 

Opciones:

  • url:
  • datos:
  • éxito:

Ejemplo:

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

Tenga en cuenta que en este caso, 'alimentación' sería un objeto javascript. Si desea pasar esto usando JSON, puede simplemente usar el javascript JSON utility.

Ejemplo:

var myJSONText = JSON.stringify(feed); 
+3

+1 para la punta jFeed. Ahora en Github y mantengo regularmente https://github.com/jfhovinne/jFeed – johnhunter

19

No, RSS es un formato basado en XML, JSON y es un idioma diferente en lugar de algún tipo de dialecto. Los lectores de RSS no entenderán JSON.

Su pregunta es similar a preguntar "¿Puedo hablar francés en chino?"

+4

Entonces, ¿no hay una norma acordada para que JSON actúe como una fuente RSS (no un RSS real sino algo que funcione con la misma idea)? Parece que sería bueno tenerlo. El RSS2.0 uno podría ser un buen comienzo. – Hyposaurus

+2

@Hyposaurus Creo que [estamos llegando] (https://jsonfeed.org/version/1). –

2

Hay varias maneras diferentes de serializar RSS en JSON. Todos funcionan de la misma manera: los elementos y los atributos se convierten en nombres de propiedad, los valores se convierten en valores de propiedad, etc. Consulte la técnica Piyush Shah's, por ejemplo, que es una implementación de .NET.

La transformación de XML arbitrario a JSON utilizando XSLT es lo suficientemente simple como para encontrar una docena de ejemplos de ella en Google.

Mientras esto se haga de forma coherente, JavaScript que puede procesar un modelo de objeto diseñado para replicar la estructura de datos de la especificación RSS debería poder manejar el modelo de objetos en el que JSON se deserializa.

¿A quién estás planeando enviar este JSON? Esa es la verdadera pregunta.

3

Json.NET - http://james.newtonking.com/projects/json-net.aspx - tiene soporte para convertir cualquier documento XML a 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); 
9

¿Está la especificación RSS (sans la parte XML) una especificación útil para conformar en este caso?

Si desea inventar otro formato de sindicación, le recomiendo usar Atom como base. En mi humilde opinión tiene un diseño mucho más limpio y consistente, y tiene características útiles como actualizaciones confiables de artículos pasados, hace distinción entre resúmenes y contenido completo, etc.

Me preguntaba si esto ya se había hecho.

Flickr tiene JSON output format. Incluso tienen lolcode feed.

+5

Elegido solo por el enlace al lolcode, lo que me hizo reír más de manera poco profesional. – TRiG

1

Bueno, si está desarrollando alguna aplicación de JavaScript, es posible que desee obtener cualquier fuente RSS como JSON para solucionar el problema de consultas entre dominios. Existe una solución fiable provista por Google que convierte cualquier RSS a JSON. Para los amantes de jQuery hay un universal RSS to JSON converter plugin.

Ejemplo:

$.jGFeed('http://twitter.com/statuses/user_timeline/26767000.rss', 
    function(feeds){ 

    // feeds is a javascript object with RSS content 

    }, 10); 
3

Tienes razón de que el cliente lectura la alimentación tendría que contar con el apoyo personalizado para lo eran los detalles de su JSON. Por lo tanto, necesitaría crear un lector de feeds personalizado para consumir esa información, o alguien tendría que proponer un estándar de alimentación JSON, y tendría que ser ampliamente adoptado.

Bueno, creo que finalmente se han cumplido tus deseos, amigo!

Eche un vistazo a JSON Feed. Hasta el momento de escribir estas líneas, solo tiene una semana de antigüedad, pero ya está ganando impulso, ya que cuenta con el respaldo de Feedly, Feedbin, News Explorer, NewsBlur, y muchas más durante todo el tiempo.

Si tuviera que elegir un estándar para usar al generar una versión JSON de RSS, elegiría JSON Feed con seguridad.

+0

Desde que publiqué esto, también se agregó soporte a Feedly. – jlbang

0

Sé que esta es una pregunta bastante antigua, y tal vez irrelevante ahora.

Sin embargo. Sugeriría que cualquiera que busque publicar un feed similar a RSS en JSON debería usar un nuevo formato que esté ganando aceptación rápidamente; JSONFeed (https://jsonfeed.org).