Как ответить с помощью хорошо напечатанного объекта JSON, используя игровую среду?
Как можно отправить, используя Play! Framework, ответ JSON, который отформатирован, чтобы быть читаемым человеком?
Например, я ищу что-то вроде:
def handleGET(path:String) = Action{ implicit request =>
val json = doSomethingThatReturnsAJson(path,request)
request.getQueryString("pretty") match {
case Some(_) => //some magic that will beautify the response
case None => Ok(json)
}
}
Мой поиск привел меня к JSON pretty-print, который сам по себе не очень помог, но он сказал, что возможность должна быть интегрирована в будущие версии. Это была игра 2.1.X, так что, я думаю, она уже существует где-то в версии игры 2.2X?
Ответы
Ответ 1
Play Framework имеет встроенную поддержку печати:
import play.api.libs.json.Json
Json.prettyPrint(aJsValue)
Итак, в вашем случае было бы достаточно сделать следующее:
def handleGET(path:String) = Action { implicit request =>
val json = doSomethingThatReturnsAJson(path, request)
request.getQueryString("pretty") match {
case Some(_) => Ok(Json.prettyPrint(json)).as(ContentTypes.JSON)
case None => Ok(json)
}
}
Ответ 2
Вы можете использовать Gson для печати строки Json, не знаете о scala; но вот пример Java, который вы можете преобразовать в scala и использовать его:
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String jsonStr = gson.toJson(obj);
System.out.println(jsonStr);