public struct WriteConfig {
public static let compact: WriteConfig
public static let pretty: WriteConfig
public mut prop htmlSafe: Bool
public mut prop indent: String
public mut prop newline: String
public mut prop useSpaceAfterSeparators: Bool
} 功能:用于表示 JsonWriter 的序列化格式配置。
示例:
from encoding import json.stream.{JsonWriter, WriteConfig, JsonSerializable}
from std import io.ByteArrayStream
main() {
// 构造 JsonWriter
let buffer = ByteArrayStream()
let writer = JsonWriter(buffer)
// 设置 JSON 写格式配置
let fmtCfg = WriteConfig.pretty
writer.writeConfig = fmtCfg
// 写 JSON
writer.writeValue(MyObj())
// 打印 JSON 序列化字符串
println(String.fromUtf8(buffer.bytes()))
0
}
// 支持 JSON 序列化的类
class MyObj <: JsonSerializable {
public func toJson(w: JsonWriter): Unit {
w.startObject()
w.writeName("Name").writeValue("zhangsan")
w.writeName("Age").writeValue(18)
w.writeName("Scores").writeValue([88.8, 99.9])
w.writeName("Class")
w.startObject()
w.writeName("Name").writeValue("Class A")
w.writeName("Students Number").writeValue(33)
w.endObject()
w.endObject()
w.flush()
}
} 运行结果:
{
"Name": "zhangsan",
"Age": 18,
"Scores": [
88.8,
99.9
],
"Class": {
"Name": "Class A",
"Students Number": 33
}
} public static let compact: WriteConfig
功能:提供紧凑的序列化格式。
compact 的各属性值为:
示例:
{"Name":"zhangsan","Age":18,"Scores":[88.8,99.9],"Class":{"Name":"Class A","Students Number":33}} public static let pretty: WriteConfig
功能:提供整洁的序列化格式。
pretty 的各属性值为:
示例:
{
"Name": "zhangsan",
"Age": 18,
"Scores": [
88.8,
99.9
],
"Class": {
"Name": "Class A",
"Students Number": 33
}
} public mut prop htmlSafe: Bool
功能:用于表示是否转义 HTML 字符 <、>、&、=和'。
该值为 true 时,会将 HTML 字符转义为对应的 Unicode 编码的字符串。
该选项只对 json value 中的字符串字面量有效。
public mut prop indent: String
功能:用于表示序列化时每个缩进级别填入的缩进字符串。取值应匹配正则 ^[ \t]*$。
当上述的换行起作用时,该值会作为换行后的填充符。
异常:
public mut prop newline: String
功能:用于表示序列化时填入的换行符。取值应匹配正则 ^[\r\n]*$ 。
当该值不为空字符串且合法时,JsonWriter 调用 startObject 和 startArray 操作、插入元素、以及它们的结束操作会产生新的换行。
当该值为空字符串时,不会触发换行。
异常: