如何使用Play提供XML和JSON!2

如何使用Play提供XML和JSON!2,xml,json,scala,playframework,playframework-2.0,Xml,Json,Scala,Playframework,Playframework 2.0,我正在玩弄一个简单的应用程序,让我的脚湿玩!2.0. 我希望能够以XML(ATOM提要)和JSON的形式提供我的资源。我知道如何在1.2.x中做到这一点,但这种方式似乎在2.0中不起作用。有人知道怎么做吗?非常感谢您的示例。对于JSON,我建议您看看这个问题 XML要简单得多,因为您可以通过以下代码调用并返回结果: Ok(Xml(xmlString)) 但是更简洁的方法是,fot使用此功能可能是在views/xml下编写自己的模板,就像mdo.scala.xml可以 @(mdo:MyDomai

我正在玩弄一个简单的应用程序,让我的脚湿玩!2.0. 我希望能够以XML(ATOM提要)和JSON的形式提供我的资源。我知道如何在1.2.x中做到这一点,但这种方式似乎在2.0中不起作用。有人知道怎么做吗?非常感谢您的示例。

对于JSON,我建议您看看这个问题

XML要简单得多,因为您可以通过以下代码调用并返回结果:

Ok(Xml(xmlString))
但是更简洁的方法是,fot使用此功能可能是在
views/xml
下编写自己的模板,就像
mdo.scala.xml
可以

@(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>

否则,在封送处理库的帮助下,您可能拥有与toJson类似的toXml函数

我会给您打勾,但除了您提到的之外,您还需要做一件必要的事情。要有效,第一行必须类似于
@(posts:Seq[Post])
。如果不这样做,您的第一行就不会像它应该做的那样是xml声明。缺陷可能吧。不,这条线是必须的!我只是忘了提那件事。让我补充一下。实际上,它是XML规范的一部分,这一行总是用UTF-8编码的,解析器使用它来了解文档中使用了哪种编码(以及XML版本,但实际上使用的并不多…),问题仍然存在于您的解决方案中。生成的XML的第一行实际上是空的。您需要将声明放在play的参数之后,以正确呈现它。这对我来说是个错误。好吧,你是说那出戏吧!正在其参数列表后添加\n。。。嗯,是的,有点问题,我会检查一下并与他们讨论。谢谢
def c = Action {
  val o = MyDomainObject("mine", "for example", List("stack", "over", "flow"))
  Ok(views.xml.mdo(o))
}