2012-01-03 4 views
6

Я играю с созданием простого приложения, чтобы мои ноги были мокрыми от Play! 2,0. Я хотел бы иметь возможность обслуживать мои ресурсы как XML (фид ATOM, действительно) и JSON. Я знаю, как это сделать в 1.2.x, но, похоже, не работает с 2.0. Кто-нибудь знает как это делать? Примеры были бы высоко оценены.Как служить XML и JSON с Play! 2.0

ответ

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 с помощью библиотеки маршалинга

+0

Я дам вам галочки, но здесь это необходимо, что вам нужно сделайте в дополнение к тому, что вы упомянули. Чтобы быть в силе, ваша первая строка должна быть чем-то вроде '@ (posts: Seq [Post]) '. Если вы этого не сделаете, ваша первая строка не будет объявлением xml, как должно. Ошибка? Вероятно. – geowa4

+0

НЕТ Эта строка обязательна! Я просто забыл об этом. Позвольте мне добавить его. На самом деле это часть спецификации XML, эта строка всегда кодируется в UTF-8 и используется синтаксическими анализаторами, чтобы знать, какая кодировка используется в документе (и версия XML, но на самом деле это не так уж и много используется). ..) –

+0

Проблема все еще существует в вашем решении. Первая строка вашего сгенерированного XML фактически пуста. Вы должны сразу же добавить декларацию после того, как параметры для воспроизведения будут правильно отображены. Это ошибка для меня. – geowa4