如何使用play框架响应漂亮的JSON对象?

时间:2013-11-24 14:31:07

标签: json scala playframework pretty-print

如何使用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版本的游戏中了?

2 个答案:

答案 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);