Я играю с созданием простого приложения, чтобы мои ноги были мокрыми от Play! 2,0. Я хотел бы иметь возможность обслуживать мои ресурсы как XML (фид ATOM, действительно) и JSON. Я знаю, как это сделать в 1.2.x, но, похоже, не работает с 2.0. Кто-нибудь знает как это делать? Примеры были бы высоко оценены.Как служить XML и JSON с Play! 2.0
6
A
ответ
11
Для JSON я бы порекомендовал вам взглянуть на этот вопрос How to render JSON response in Play framework v2.0 (latest build from GIT)
XML гораздо проще, так как вы можете просто позвонить возвращают результат с кодом, как это:
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))
}
В противном случае, вы, возможно, имеют аналогичную функцию ToXml к toJson с помощью библиотеки маршалинга
Я дам вам галочки, но здесь это необходимо, что вам нужно сделайте в дополнение к тому, что вы упомянули. Чтобы быть в силе, ваша первая строка должна быть чем-то вроде '@ (posts: Seq [Post]) Xml version =" 1.0 "encoding =" utf-8 "?>'. Если вы этого не сделаете, ваша первая строка не будет объявлением xml, как должно. Ошибка? Вероятно. – geowa4
НЕТ Эта строка обязательна! Я просто забыл об этом. Позвольте мне добавить его. На самом деле это часть спецификации XML, эта строка всегда кодируется в UTF-8 и используется синтаксическими анализаторами, чтобы знать, какая кодировка используется в документе (и версия XML, но на самом деле это не так уж и много используется). ..) –
Проблема все еще существует в вашем решении. Первая строка вашего сгенерированного XML фактически пуста. Вы должны сразу же добавить декларацию после того, как параметры для воспроизведения будут правильно отображены. Это ошибка для меня. – geowa4