2012-01-03 10 views
6

¡Estoy jugando con la construcción de una aplicación simple para mojarme los pies con Play! 2.0. Me gustaría poder servir mis recursos como XML (feed ATOM, realmente) y JSON. Sé cómo hacerlo en 1.2.x, pero de esa manera no parece funcionar con 2.0. Alguien sabe como hacerlo? Los ejemplos serían muy apreciados.Cómo servir XML y JSON con Play! 2.0

Respuesta

11

Para JSON le recomiendo que mirar a esta pregunta How to render JSON response in Play framework v2.0 (latest build from GIT)

XML es mucho más sencillo ya que sólo se puede llamar a devolver el resultado con código como este:

Ok(Xml(xmlString)) 

Pero la forma más limpia, fot el uso de esta funcionalidad es, probablemente, para escribir su propia plantilla en views/xml como mdo.scala.xml podría ser

@(mdo:MyDomainObject) 
<?xml version="1.0" encoding="utf-8"?> 
<MyDomainObject> 
    <name>@mdo.name</name> 
    <desc>@mdo.desc</desc> 
    <kws> 
    @mdo.keywords map { k=> 
    <kw>k</kw> 
    } 
    </kws> 
</MyDomainObject> 

Luego, en el controlador de

def c = Action { 
    val o = MyDomainObject("mine", "for example", List("stack", "over", "flow")) 
    Ok(views.xml.mdo(o)) 
} 

De lo contrario, puede que tienen la función toXML similar a toJson con la ayuda de una biblioteca de cálculo de referencias

+0

Te daré la marca de verificación, pero aquí es una cosa necesaria que necesita para hacer además de lo que has mencionado. Para que sea válida, su primera línea debe ser algo así como '@ (posts: Seq [Post]) '. Si no lo hace, su primera línea no será una declaración xml como debería. ¿Error? Probablemente. – geowa4

+0

¡NO esta línea es obligatoria! Me olvidé de mencionarlo. Déjame agregarlo. En realidad, es parte de la especificación XML, esta línea siempre está codificada en UTF-8 y es utilizada por los analizadores para saber qué codificación se usa en el documento (y la versión XML, pero en realidad no se usa tanto). ..) –

+0

El problema todavía existe en su solución. La primera línea de su XML generado está realmente vacía. Debe colocar la declaración inmediatamente después de los parámetros para reproducir para que sea correcta. Eso es un error para mí. – geowa4