hprose.Reader

构造器方法

  1. var reader = new Reader(stream[, simple[, useHarmonyMap[, binary]]]);

第一个参数 stream 是一个 StringIO 的实例对象,反序列化数据将会从该对象中读取。

第二个参数 simple 如果为 true,则不使用引用方式反序列化,通常在反序列化的数据中不包含引用类型数据时,设置为 true 可以加快速度。当包含引用类型数据时,需要设置为 false(即默认值),否则会抛出异常。

第三个参数 useHarmonyMap 如果为 true,则反序列化 Map 时,会以 ECMAScript 6 中的 Map 类型的实例对象返回反序列化值。否则返回 Object 对象。当反序列化的 Map 的键(key)为非字符串以外的其它类型(或多种混合类型)时,将该参数设置为 true 可以得到更准确的反序列化结果。默认值为 false

第四个参数 binarytrue 时,StringIO 的实例对象中的数据为二进制字符串,为 false 时,StringIO 的实例对象中的数据为普通字符串。只有当序列化数据中包含二进制字符串数据时,才需要将该参数设置为 true

stream 属性

只读属性,返回当前用于读取反序列化数据的 StringIO 实例对象。该属性的值即上面构造器中的第一个参数。

useHarmonyMap 属性

功能同上面的第三个参数一样,可以在对象创建之后进行设置。

binary 属性

功能同上面的第四个参数一样,可以在对象创建之后进行设置。

checkTag 方法

  1. reader.checkTag(expectTag[, tag]);

如果第二个参数不存在,则自动读取当前流中的一个字符作为 tag 值。如果 expectTagtag 不一致,则抛出异常。

该方法没有返回值。

checkTags 方法

  1. reader.checkTags(expectTags[, tag]);

如果第二个参数不存在,则自动读取当前流中的一个字符作为 tag 值。如果 expectTags 中不包含 tag,则抛出异常。

expectTags 是一个字符数组或者字符串,该数组或字符串中包含一个或多个 hprose.Tags 中的枚举值,但通常不会用其它取值。

如果该方法执行成功,返回 tag 值。

unserialize 方法

  1. reader.unserialize();

从当前数据流中读取数据并返回反序列化结果。如果当前数据流中包含有多个序列化数据,则一次只返回一个结果。

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

readInteger 方法

  1. reader.readInteger();

从当前数据流中反序列化一个整数结果并返回。

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

readLong 方法

  1. reader.readLong();

从当前数据流中反序列化一个长整数结果并返回,如果该结果超出 JavaScript 可表示的整数范围,则以字符串形式返回结果。

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

readDouble 方法

  1. reader.readDouble();

从当前数据流中反序列化一个浮点数结果并返回。

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

readBoolean 方法

  1. reader.readBoolean();

从当前数据流中反序列化一个布尔值结果并返回。

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

readDate 方法

  1. reader.readDate();

从当前数据流中反序列化一个 Date 结果并返回。

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

  1. reader.readDateWithoutTag();

从当前数据流中反序列化一个 Date 结果并返回,该方法假设序列化标记已被读取,并且其值为 hprose.Tags.TagDate。

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

readTime 方法

  1. reader.readTime();

从当前数据流中反序列化一个只包含时间的 Date 结果并返回。

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

  1. reader.readTimeWithoutTag();

从当前数据流中反序列化一个只包含时间的 Date 结果并返回,该方法假设序列化标记已被读取,并且其值为 hprose.Tags.TagTime。

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

readBinary 方法

  1. reader.readBinary();

从当前数据流中反序列化一个二进制数据结果并返回。返回结果为 BinaryString 类型的实例对象。只有当 binary 属性为 true 时,该方法才能调用,否则抛出异常。

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

  1. reader.readBinaryWithoutTag();

从当前数据流中反序列化一个二进制数据结果并返回。该方法假设序列化标记已被读取,并且其值为 hprose.Tags.TagBytes。

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

readString 方法

  1. reader.readString();

从当前数据流中反序列化一个字符串结果并返回。

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

  1. reader.readStringWithoutTag();

从当前数据流中反序列化一个字符串结果并返回。该方法假设序列化标记已被读取,并且其值为 hprose.Tags.TagString。

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

readGuid 方法

  1. reader.readGuid();

从当前数据流中反序列化一个 GUID 结果并返回,结果为字符串类型。

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

  1. reader.readGuidWithoutTag();

从当前数据流中反序列化一个 GUID 结果并返回。该方法假设序列化标记已被读取,并且其值为 hprose.Tags.TagGuid。

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

readList 方法

  1. reader.readList();

从当前数据流中反序列化一个 List 结果并返回,结果为数组类型。

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

  1. reader.readListWithoutTag();

从当前数据流中反序列化一个 List 结果并返回。该方法假设序列化标记已被读取,并且其值为 hprose.Tags.TagList。

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

readMap 方法

  1. reader.readMap();

从当前数据流中反序列化一个 Map 结果并返回,结果为 Object 类型的实例对象或 ECMAScript 6 的 Map 类型的实例对象。

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

  1. reader.readMapWithoutTag();

从当前数据流中反序列化一个 Map 结果并返回。该方法假设序列化标记已被读取,并且其值为 hprose.Tags.TagMap。

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

readObject 方法

  1. reader.readObject();

从当前数据流中反序列化一个对象结果并返回。该对象的构造器会通过以下方式查找或生成:

如果已经通过 hprose.ClassManager.register 方法注册,并可以查找到,直接返回。

如果在全局通过遍历搜索可以查找到同名构造器,则自动注册,并返回。

通过将读取到的类名中的 _ 分别替换成 . 来全局遍历查找同名构造器,如果找到,则自动注册,并返回。

如果通过以上方式都查找不到,则自动生成一个构造器,然后自动注册,并返回。

自动生成的构造器上会添加一个 getClassName 方法,该方法会返回反序列化时读取到的类名。

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

  1. reader.readObjectWithoutTag();

从当前数据流中反序列化一个对象结果并返回。该方法假设序列化标记已被读取,并且其值为 hprose.Tags.TagObject。

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

reset 方法

  1. reader.reset();

将反序列化的引用计数器重置。