如何使用Play发送!框架,格式化为人类可读的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版本的游戏中了?
答案 0 :(得分:21)
Play框架内置了漂亮的打印支持:
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)
}
}
答案 1 :(得分:-2)
你可以使用Gson来打印Json字符串,不知道scala;但这是一个Java示例,您可以将其转换为scala并使用它:
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String jsonStr = gson.toJson(obj);
System.out.println(jsonStr);