Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用play framework对打印精美的JSON对象进行响应?_Json_Scala_Playframework_Pretty Print - Fatal编程技术网

如何使用play framework对打印精美的JSON对象进行响应?

如何使用play framework对打印精美的JSON对象进行响应?,json,scala,playframework,pretty-print,Json,Scala,Playframework,Pretty Print,如何才能发送,使用发挥!框架,一个格式化为人类可读的JSON响应 例如,我正在寻找类似于: def handleGET(path:String) = Action{ implicit request => val json = doSomethingThatReturnsAJson(path,request) request.getQueryString("pretty") match { case Some(_) => //some magic that will

如何才能发送,使用发挥!框架,一个格式化为人类可读的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)
  }
}

我的搜索让我找到了,这本身并没有多大帮助,但它确实说这种能力应该集成到未来的版本中。那就是play 2.1.X,所以,我想它已经存在于play的2.2X版本中了?

你可以使用Gson漂亮地打印Json字符串,不知道scala;但这里有一个Java示例,您可以将其转换为scala并使用它:

Gson gson = new GsonBuilder().setPrettyPrinting().create();
String jsonStr = gson.toJson(obj);
System.out.println(jsonStr);

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)
  }
}

这对我没有帮助。因为我返回一个http响应,所以我需要使用play的json对象,play框架将处理所有我不想定义自己的烦人事情。像
内容类型
标题等”。。。顺便说一句,我可以直接得到漂亮的json字符串。不需要外部工具。但是,字符串对我也没什么好处:\即使我使用
string
而不是
JsObject
,我也会处理json响应应该具有的所有内容吗?可能不会,但“一切”实际上只是内容类型。我编辑了我的答案,以显示强制执行其他内容类型的必要性,这没什么大不了的。美化JSON有什么好处吗?如果只是为了调试,您可以使用浏览器插件(如用于Firefox的JSONView)对其进行格式化。发送美化的JSON只会浪费带宽。默认行为是缩小JSON。只有在提供
pretty
标志作为查询参数时,才能美化结果。福利?它是可读的。有时,您会希望看到您的e数据的可读表示。举个例子来看。他们就是这么做的。通过提供一个漂亮的标志,您可以看到节点/集群上的所有类型的数据。这是很有用的。