目录

结构体

struct WriteConfig

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

[h2]static let compact

public static let compact: WriteConfig

功能:提供紧凑的序列化格式。

compact 的各属性值为:

  • newline: ""
  • indent: ""
  • useSpaceAfterSeparators: false
  • htmlSafe: false

示例:

{"Name":"zhangsan","Age":18,"Scores":[88.8,99.9],"Class":{"Name":"Class A","Students Number":33}}

[h2]static let pretty

public static let pretty: WriteConfig

功能:提供整洁的序列化格式。

pretty 的各属性值为:

  • newline: "\n"
  • indent: " "
  • useSpaceAfterSeparators: true
  • htmlSafe: false

示例:

{
    "Name": "zhangsan",
    "Age": 18,
    "Scores": [
        88.8,
        99.9
    ],
    "Class": {
        "Name": "Class A",
        "Students Number": 33
    }
}

[h2]prop htmlSafe

public mut prop htmlSafe: Bool

功能:用于表示是否转义 HTML 字符 <、>、&、=和'。

该值为 true 时,会将 HTML 字符转义为对应的 Unicode 编码的字符串。

该选项只对 json value 中的字符串字面量有效。

[h2]prop indent

public mut prop indent: String

功能:用于表示序列化时每个缩进级别填入的缩进字符串。取值应匹配正则 ^[ \t]*$。

当上述的换行起作用时,该值会作为换行后的填充符。

异常:

[h2]prop newline

public mut prop newline: String

功能:用于表示序列化时填入的换行符。取值应匹配正则 ^[\r\n]*$ 。

当该值不为空字符串且合法时,JsonWriter 调用 startObject 和 startArray 操作、插入元素、以及它们的结束操作会产生新的换行。

当该值为空字符串时,不会触发换行。

异常:

[h2]prop useSpaceAfterSeparators

public mut prop useSpaceAfterSeparators: Bool

功能:用于表示序列化时在 ':' 和 ',' 后是否加一个空格。

该值为 true 时,每插入一个 field name 或者 array 元素后会自动写入一个空格。

该选项只对 json Object 中的 field 以及 json Array 中的元素有效。