hprose.Formatter

serialize 方法

  1. hprose.Formatter.serialize(value[, simple[, binary]]);

该方法会将 value 进行序列化并返回序列化后的数据。如果 simpletrue,则不使用引用方式序列化,通常在序列化的数据 value 中不包含引用类型数据时,设置为 true 可以加快速度。当包含引用类型数据时,需要设置为 false(即默认值),尤其是当引用数据中包括递归数据时,如果不使用引用方式,会陷入死循环导致堆栈溢出的错误。如果 value 中包含有二进制数据,则需要将 binary 参数设置为 true,否则设置为 false(即默认值)。

返回结果为 String 类型的对象实例。

如果序列化过程中发生错误,则会抛出异常。

hprose 还提供了一个简化写法:

  1. hprose.serialize(value[, simple[, binary]]);

该简化写法跟完整写法在功能上没有任何区别。

unserialize 方法

  1. 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

第四个参数 binarytrue 时,StringIO 的实例对象中的数据为二进制字符串,为 false 时,StringIO 的实例对象中的数据为普通字符串。只有当序列化数据中包含二进制字符串数据时,才需要将该参数设置为 true。如果反序列化过程中发生错误,则会抛出异常。

hprose 还提供了一个简化写法:

  1. hprose.unserialize(stream[, simple[, useHarmonyMap[, binary]]]);

该简化写法跟完整写法在功能上没有任何区别。