漂亮地打印 Kotlin Json Serialized

zet*_*las 5 json kotlin

如何漂亮地打印 Kotlin Serialized 类,以便将键格式化为单独的行,而不是一行(默认)?Json.encodeToString将所有内容打印在一行上。我在kotlinx-serialization-json库中看到了PrettyPrint文档,但 JsonBuilder 和 JsonConfiguration 有私有构造函数。

可序列化示例:

@kotlinx.serialization.Serializable
data class MyObject(
    val name: String,
    val age: Int
)

val myObject = MyObject(name = "hello", age = 2)
val string = Json.encodeToString(myObject)
print(string)
Run Code Online (Sandbox Code Playgroud)

上面的打印内容{"name":"hello","age":2},但我希望所有内容都在单独的行上。

zet*_*las 6

使用它可以访问JsonBuilder打印选项。

val prettyJson = Json { // this returns the JsonBuilder
    prettyPrint = true
    // optional: specify indent
    prettyPrintIndent = " "
}

val myObject = MyObject(name = "hello", age = 2)
val string = prettyJson.encodeToString(myObject)
print(string)
Run Code Online (Sandbox Code Playgroud)

这打印:

{
 "name": "hello",
 "age": 2
}
Run Code Online (Sandbox Code Playgroud)