【问题标题】:How to serve XML and JSON with Play! 2.0如何使用 Play 提供 XML 和 JSON! 2.0
【发布时间】:2012-02-01 22:35:50
【问题描述】:

我正在玩弄构建一个简单的应用程序来让我的脚湿透 Play! 2.0。我希望能够以 XML(实际上是 ATOM 提要)和 JSON 的形式提供我的资源。我知道如何在 1.2.x 中做到这一点,但这种方式似乎不适用于 2.0。有谁知道该怎么做?示例将不胜感激。

【问题讨论】:

    标签: xml json scala playframework playframework-2.0


    【解决方案1】:

    对于 JSON,我建议你看看这个问题 How to render JSON response in Play framework v2.0 (latest build from GIT)

    XML 要简单得多,因为您可以使用如下代码调用 return 结果:

    Ok(Xml(xmlString))
    

    但更简洁的方法是,使用此功能可能是在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>
    

    然后在你的控制器中

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

    否则,在编组库的帮助下,您可能拥有与 toJson 类似的 toXml 函数

    【讨论】:

    • 我会给你打勾,但是除了你提到的之外,还有一件你需要做的事情。为了有效,您的第一行必须类似于@(posts: Seq[Post])&lt;?xml version="1.0" encoding="utf-8"?&gt;。如果你不这样做,你的第一行就不会像它应该的那样是一个 xml 声明。漏洞?大概吧。
    • NO 此行是强制性的!我只是忘了提到它。让我补充一下。实际上它是 XML 规范的一部分,这一行总是以 UTF-8 编码,解析器使用它来了解文档中使用了哪种编码(以及 XML 版本,但实际上并没有太多使用。 ..)
    • 您的解决方案中仍然存在问题。生成的 XML 的第一行实际上是空的。您需要将声明紧跟在播放参数之后才能正确呈现。这对我来说是个错误。
    • 好吧,你的意思是玩!正在其参数列表后添加一个 \n ... 嗯,是的,有点像错误,我会检查一下并与他们讨论。谢谢
    猜你喜欢
    • 1970-01-01
    • 2012-05-01
    • 1970-01-01
    • 2013-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多