类 DefaultDsonConverter

java.lang.Object
cn.wjybxx.dsoncodec.DefaultDsonConverter
所有已实现的接口:
Converter, DsonConverter

public class DefaultDsonConverter extends Object implements DsonConverter
作者:
wjybxx date 2023/4/2
  • 方法详细资料

    • codecRegistry

      public DsonCodecRegistry codecRegistry()
      指定者:
      codecRegistry 在接口中 DsonConverter
    • typeMetaRegistry

      public TypeMetaRegistry typeMetaRegistry()
      指定者:
      typeMetaRegistry 在接口中 DsonConverter
    • options

      public ConverterOptions options()
      指定者:
      options 在接口中 DsonConverter
    • withOptions

      public DsonConverter withOptions(ConverterOptions options)
      从接口复制的说明: DsonConverter
      在共享其它属性的情况,创建一个持有给定options的Converter
      指定者:
      withOptions 在接口中 DsonConverter
    • write

      @Nonnull public byte[] write(Object value, @Nonnull TypeInfo<?> typeInfo)
      从接口复制的说明: Converter
      将一个对象写入源 注意:如果对象的运行时类型和声明类型一致,则可省去编码结果中的类型信息。
      指定者:
      write 在接口中 Converter
      参数:
      typeInfo - 对象声明类型信息
    • read

      public <T> T read(byte[] source, @Nonnull TypeInfo<T> typeInfo, Supplier<? extends T> factory)
      从接口复制的说明: Converter
      从数据源中读取一个对象 注意:如果对象的声明类型和写入的类型不兼容,则表示投影;factory用于支持将数据读取到既有实例或子类实例上。
      指定者:
      read 在接口中 Converter
      参数:
      source - 数据源
      typeInfo - 对象声明类型信息
      factory - 实例工厂
    • write

      public void write(Object value, TypeInfo<?> typeInfo, DsonChunk chunk)
      指定者:
      write 在接口中 Converter
      参数:
      value - 要写入的对象
      typeInfo - 对象声明类型信息
      chunk - 二进制块,写入的字节数设置到DsonChunk
    • read

      public <T> T read(DsonChunk chunk, TypeInfo<T> typeInfo, Supplier<? extends T> factory)
      指定者:
      read 在接口中 Converter
      参数:
      chunk - 二进制块,读取的字节数设置到DsonChunk
      typeInfo - 对象声明类型信息
      factory - 实例工厂
      返回:
      解码结果,顶层对象不应该是null
    • cloneObject

      public <T> T cloneObject(Object value, TypeInfo<T> typeInfo, Supplier<? extends T> factory)
      从接口复制的说明: Converter
      克隆一个对象。 注意: 1.返回值的类型不一定和原始对象相同,这通常发生在集合对象上。 2.如果Codec存在lazyDecode,也会导致不同
      指定者:
      cloneObject 在接口中 Converter
      参数:
      typeInfo - 用于确定返回结果类型
      factory - 实例工厂
    • writeAsDson

      @Nonnull public String writeAsDson(Object value, @Nonnull TypeInfo<?> typeInfo, ObjectStyle style)
      从接口复制的说明: DsonConverter
      将一个对象写入源 如果对象的运行时类型和TypeInfo.rawType一致,则会省去编码结果中的类型信息, 使用TypeInfo.NONE也可以避免写入类型信息。
      指定者:
      writeAsDson 在接口中 DsonConverter
      参数:
      typeInfo - 对象的类型信息
      style - 缩进格式
    • readFromDson

      public <T> T readFromDson(CharSequence source, @Nonnull TypeInfo<T> typeInfo, Supplier<? extends T> factory)
      从接口复制的说明: DsonConverter
      从数据源中读取一个对象
      指定者:
      readFromDson 在接口中 DsonConverter
      参数:
      source - 数据源
      typeInfo - 要读取的目标类型信息,部分实现支持投影
    • writeAsDson

      public void writeAsDson(Object value, @Nonnull TypeInfo<?> typeInfo, Writer writer, ObjectStyle style)
      从接口复制的说明: DsonConverter
      将一个对象写入指定writer (默认不关闭writer)
      指定者:
      writeAsDson 在接口中 DsonConverter
      参数:
      typeInfo - 对象的类型信息
      writer - 用于接收输出
      style - 缩进格式
    • readFromDson

      public <T> T readFromDson(Reader source, @Nonnull TypeInfo<T> typeInfo, Supplier<? extends T> factory)
      从接口复制的说明: DsonConverter
      从数据源中读取一个对象 (默认不关闭reader)
      指定者:
      readFromDson 在接口中 DsonConverter
      参数:
      source - 用于支持大数据源
      typeInfo - 要读取的目标类型信息,部分实现支持投影
    • writeAsDsonValue

      public DsonValue writeAsDsonValue(Object value, TypeInfo<?> typeInfo)
      从接口复制的说明: DsonConverter
      将一个对象写为DsonObjectDsonArray
      指定者:
      writeAsDsonValue 在接口中 DsonConverter
      参数:
      value - 顶层对象必须的容器对象,Object和数组
      typeInfo - 对象的类型信息
      返回:
      DsonObjectDsonArray
    • readFromDsonValue

      public <T> T readFromDsonValue(DsonValue source, @Nonnull TypeInfo<T> typeInfo, Supplier<? extends T> factory)
      指定者:
      readFromDsonValue 在接口中 DsonConverter
      参数:
      source - DsonObjectDsonArray
      typeInfo - 要读取的目标类型信息
    • readAsDsonValue

      public DsonValue readAsDsonValue(Reader source)
      从接口复制的说明: DsonConverter
      将Dson源解码为DsonValue中间对象 -- 只读取一个顶层对象。 外部可以保存该对象,以提高重复反序列化的效率。 (默认不关闭Reader)
      指定者:
      readAsDsonValue 在接口中 DsonConverter
      参数:
      source - 数据源
      返回:
      中间对象
    • readAsDsonCollection

      public DsonArray<String> readAsDsonCollection(Reader source)
      从接口复制的说明: DsonConverter
      将Dson源解码为DsonValue中间对象 -- 读取全部数据,header存储在外层容器(DsonArray)上。 外部可以保存该对象,以提高重复反序列化的效率。 (默认不关闭Reader)
      指定者:
      readAsDsonCollection 在接口中 DsonConverter
      参数:
      source - 数据源
      返回:
      中间对象
    • newInstance

      public static DefaultDsonConverter newInstance(TypeMetaRegistry typeMetaRegistry, List<? extends DsonCodec<?>> pojoCodecList, ConverterOptions options)
      参数:
      typeMetaRegistry - 所有的类型id信息,包括protobuf的类
      pojoCodecList - 所有的普通对象编解码器,外部传入,因此用户可以处理冲突后传入
      options - 一些可选项
    • newInstance2

      public static DefaultDsonConverter newInstance2(List<DsonCodecRegistry> registryList, TypeMetaRegistry typeMetaRegistry, ConverterOptions options)
      参数:
      registryList - 可以包含一些特殊的registry
      typeMetaRegistry - 所有的类型id信息,包括protobuf的类
      options - 一些可选项