Как ответить на симпатичный 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);
Другие вопросы по тегам