Как ответить на симпатичный JSON, используя игровую среду?
Как можно отправить, используя игровую среду, ответ json, который будет украшен? я хотел бы иметь параметр запроса pretty
, что, когда он будет предоставлен, ответ 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 игры.
2 ответа
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)
}
}
Вы можете использовать Gson, чтобы красиво напечатать строку Json, не знаю о scala; но вот пример Java, который вы можете преобразовать в scala и использовать его:
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String jsonStr = gson.toJson(obj);
System.out.println(jsonStr);