在scala中格式化JSON字符串
发布时间:2020-12-16 09:49:34 所属栏目:安全 来源:网络整理
导读:是否有一种直接的方式来格式化 scala中的 JSON字符串? 我有一个像这样的JSON字符串: val json = {"foo": {"bar": {"baz": T}}} 我可以使用函数f: f(json) = { "foo": {"bar": {"baz": T} } } 我知道我在答案中所做的格式并不完美,但你明白了.是的,可以在
是否有一种直接的方式来格式化
scala中的
JSON字符串?
我有一个像这样的JSON字符串: val json = {"foo": {"bar": {"baz": T}}} 我可以使用函数f: f(json) = { "foo": {"bar": {"baz": T} } } 我知道我在答案中所做的格式并不完美,但你明白了.是的,可以在不使用Play Framework的情况下完成吗? 解决方法
如果您使用的是Play Framework,可以使用Json.prettyPrint方法格式化JsValue:
import play.api.libs.json.Json val str = """{"foo": {"bar": {"baz": "T"}}}""" val jsValue = Json parse str // JsValue = {"foo":{"bar":{"baz":"T"}}} Json prettyPrint jsValue // String = // { // "foo" : { // "bar" : { // "baz" : "T" // } // } // } 如果您使用的是scala.util.parsing.json,则必须自己创建此类方法.例如: def format(t: Any,i: Int = 0): String = t match { case o: JSONObject => o.obj.map{ case (k,v) => " "*(i+1) + JSONFormat.defaultFormatter(k) + ": " + format(v,i+1) }.mkString("{n",",n","n" + " "*i + "}") case a: JSONArray => a.list.map{ e => " "*(i+1) + format(e,i+1) }.mkString("[n","n" + " "*i + "]") case _ => JSONFormat defaultFormatter t } val jsn = JSON.parseRaw("""{"foo": {"bar": {"baz": "T"},"arr": [1,2,"x"]},"foo2": "a"}""").get // JSONType = {"foo" : {"bar" : {"baz" : "T"},"arr" : [1.0,2.0,"foo2" : "a"} format(jsn) // String = // { // "foo": { // "bar": { // "baz": "T" // },// "arr": [ // 1.0,// 2.0,// "x" // ] // },// "foo2": "a" // } 请注意,这不是一种有效的实现. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |