- hprose.Formatter
- serialize 方法
- unserialize 方法
hprose.Formatter
serialize 方法
- hprose.Formatter.serialize(value[, simple[, binary]]);
该方法会将 value
进行序列化并返回序列化后的数据。如果 simple
为 true
,则不使用引用方式序列化,通常在序列化的数据 value
中不包含引用类型数据时,设置为 true
可以加快速度。当包含引用类型数据时,需要设置为 false
(即默认值),尤其是当引用数据中包括递归数据时,如果不使用引用方式,会陷入死循环导致堆栈溢出的错误。如果 value
中包含有二进制数据,则需要将 binary
参数设置为 true
,否则设置为 false
(即默认值)。
返回结果为 String
类型的对象实例。
如果序列化过程中发生错误,则会抛出异常。
hprose 还提供了一个简化写法:
- hprose.serialize(value[, simple[, binary]]);
该简化写法跟完整写法在功能上没有任何区别。
unserialize 方法
- hprose.Formatter.unserialize(stream[, simple[, useHarmonyMap[, binary]]]);
从数据流 stream
中读取数据并返回反序列化结果。如果当前数据流中包含有多个序列化数据,则一次只返回一个结果。
stream
为反序列化的数据来源,它可以是一个 StringIO
对象,也可以是一个字符串类型的对象。
第二个参数 simple
如果为 true
,则不使用引用方式反序列化,通常在反序列化的数据中不包含引用类型数据时,设置为 true
可以加快速度。当包含引用类型数据时,需要设置为 false
(即默认值),否则会抛出异常。
第三个参数 useHarmonyMap
如果为 true
,则反序列化 Map 时,会以 ECMAScript 6 中的 Map 类型的实例对象返回反序列化值。否则返回 Object 对象。当反序列化的 Map 的键(key)为非字符串以外的其它类型(或多种混合类型)时,将该参数设置为 true
可以得到更准确的反序列化结果。默认值为 false
。
第四个参数 binary
为 true
时,StringIO
的实例对象中的数据为二进制字符串,为 false
时,StringIO
的实例对象中的数据为普通字符串。只有当序列化数据中包含二进制字符串数据时,才需要将该参数设置为 true
。如果反序列化过程中发生错误,则会抛出异常。
hprose 还提供了一个简化写法:
- hprose.unserialize(stream[, simple[, useHarmonyMap[, binary]]]);
该简化写法跟完整写法在功能上没有任何区别。