hprose.Writer
第二个参数 simple
如果为 true
,则不使用引用方式序列化,通常在序列化的数据中不包含引用类型数据时,设置为 true
可以加快速度。当包含引用类型数据时,需要设置为 false
(即默认值),尤其是当引用数据中包括递归数据时,如果不使用引用方式,会陷入死循环导致堆栈溢出的错误。
第三个参数 binary
为 true
时,数据序列化为二进制字符串,为 false
时,序列化为普通字符串。只有当序列化数据中包含二进制字符串数据时,才需要将该参数设置为 true
。序列化为二进制字符串的效率要低于序列化为普通字符串的效率。
stream 属性
只读属性,返回当前用于写入序列化数据的 StringIO
实例对象。该属性的值即上面构造器中的第一个参数。
binary 属性
可读写属性,表示该对象是否以二进制序列化,该属性的默认值即上面构造器的第三个参数。
serialize 方法
- writer.serialize(value);
序列化数据 value
。其中 value
为任意 hprose 支持的类型。
writeInteger 方法
- writer.writerInteger(value);
序列化一个整数 value
。其中 value
为一个 32 位有符号整型数。超过这个范围的整数按照长整型数格式序列化。
- writer.writeDouble(value);
序列化一个浮点数 value
。
writeBoolean 方法
- writer.writeBoolean(value);
writeUTCDate 方法
- writer.writeUTCDate(value);
序列化一个 UTC 日期时间值 value
。其中 value
为 Date
类型的实例对象。
序列化一个 UTC 日期时间值 value
,如果该值之前被序列化过,则作为引用序列化。
writeDate 方法
序列化一个本地日期时间值 value
。其中 value
为 Date
类型的实例对象。
- writer.writeDateWithRef(value);
序列化一个本地日期时间值 value
,如果该值之前被序列化过,则作为引用序列化。
writeTime 方法
- writer.writeTime(value);
序列化一个本地时间值 value
。其中 value
为 Date
类型的实例对象。
- writer.writeTimeWithRef(value);
序列化一个本地时间值 value
,如果该值之前被序列化过,则作为引用序列化。
- writer.writeBinary(value);
序列化一个二进制数据值 value
。其中 value
为 BinaryString
类型的实例对象或保存了二进制字符串的 类型的对象。只有当 binary
属性为 true
时,该方法才能调用,否则抛出异常。
- writer.writeBinaryWithRef(value);
writeString 方法
- writer.writeString(value);
序列化一个字符串值 value
。
序列化一个字符串值 value
,如果该值之前被序列化过,则作为引用序列化。
writeList 方法
- writer.writeList(value);
序列化一个 List 值 value
。其中 value
是一个数组的实例对象。
- writer.writeListWithRef(value);
序列化一个 List 值 value
,如果该值之前被序列化过,则作为引用序列化。
writeMap 方法
- writer.writeMap(value);
序列化一个 Map 值 value
。其中 value
是一个普通的 javascript 对象(比如直接使用 JSON 形式创建的对象)或 ECMAScript 6 的 Map 对象。
- writer.writeMapWithRef(value);
序列化一个 Map 值 value
,如果该值之前被序列化过,则作为引用序列化。
writeObject 方法
序列化一个对象值 value
。其中 value
是一个对象。该对象的构造器已经通过 hprose.ClassManager.register
方法注册,或者该对象的构造器是一个非匿名函数。
- writer.writeObjectWithRef(value);
将序列化的引用计数器重置。