当前位置: 首页 > 工具软件 > scala0.json > 使用案例 >

scala 自带json_在scala中格式化JSON字符串

阙星渊
2023-12-01

如果您使用的是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", "\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, "x"]}, "foo2" : "a"}

format(jsn)

// String =

// {

// "foo": {

// "bar": {

// "baz": "T"

// },

// "arr": [

// 1.0,

// 2.0,

// "x"

// ]

// },

// "foo2": "a"

// }

请注意,这不是一种有效的实现.

 类似资料: