类 ConverterOptions

java.lang.Object
cn.wjybxx.dsoncodec.ConverterOptions

@Immutable public class ConverterOptions extends Object
允许继承扩展,子类应继续保持不可变。
作者:
wjybxx date - 2023/4/17
  • 字段详细资料

    • classIdPolicy

      public final ClassIdPolicy classIdPolicy
      classId的写入策略
    • appendDef

      public final boolean appendDef
      是否写入对象基础类型字段的默认值 1.数值类型默认值为0,bool类型默认值为false 2.只在Object上下文生效

      基础值类型需要单独控制,因为有时候我们仅想不输出null,但要输出基础类型字段的默认值 -- 通常是在文本模式下。

    • appendNull

      public final boolean appendNull
      是否写入对象内的null值 1.只在Object上下文生效 2.对于一般的对象可不写入,因为ObjectReader是支持随机读的
    • writeMapAsDocument

      public final boolean writeMapAsDocument
      是否把Map编码为普通对象(文档) 1.只在文档编解码中生效(DsonCodec) 2.如果要将一个Map结构编码为普通对象,Key的运行时必须和声明类型相同,且只支持String、Integer、Long、EnumLite。 3.在不启用该选项的情况下,用户可通过字段写代理将字段转换为MapEncodeProxy,实现更精确的控制。

      Map不是Object

      本质上讲,Map是数组,而不是普通的Object,因为标准的Map是允许复杂key的,因此Map默认应该序列化为数组。但存在两个特殊的场景: 1.与脚本语言通信 脚本语言通常没有静态语言中的字典结构,由object充当,但object不支持复杂的key作为键,通常仅支持数字和字符串作为key。 因此在与脚本语言通信时,要求将Map序列化为简单的object。 2.配置文件读写 配置文件通常是无类型的,因此读取到内存中通常是一个字典结构;程序在输出配置文件时,同样需要将字典结构输出为object结构。
    • writeEnumAsString

      public final boolean writeEnumAsString
      是否将枚举写为字符串 1.只在文档编码中生效(DsonCodec) 2.对字典的Key也生效
    • randomRead

      public final boolean randomRead
      是否启用随机读。 启用随机读会增加较多的开销,需要先读取为中间结构,再解码为对象;但启用随机读的数据兼容性更好。 如果不写入默认值和null值的,通常都需要启用该特性。 如果需要反复反序列化一个对象(通常是配置文件),可以先解码为中间对象,将中间对象保存下来。 另一种方式是先反序列化,然后完整序列化为字节数组,再通过字节数组反序列化 -- 可关闭随机读。 注意:启用该特性后,不再支持DsonObjectReader.readValueAsBytes(String)接口。
    • enableBeforeEncode

      public final boolean enableBeforeEncode
      是否启用void beforeEncode(ConverterOptions)钩子方法。 默认不启用!因为启用该特性要求同一个Bean不能被多线程同时序列化 -- 只适用单线程序列化场景,
    • enableAfterDecode

      public final boolean enableAfterDecode
      是否启用void afterDecode(ConverterOptions)钩子方法。 默认启用!因为我们假设afterDecode仅依赖自身数据。
    • pbBinaryType

      public final int pbBinaryType
      protoBuf对应的二进制子类型 -- 其它模块依赖
    • usage

      public final int usage
      converter的用途 -- 用于判断是临时序列化,还是持久化入库等
    • bufferSize

      public final int bufferSize
      序列化申请的字节数组大小
    • bufferPool

      public final cn.wjybxx.base.pool.ArrayPool<byte[]> bufferPool
      字节数组缓存池 -- 多线程下需要注意线程安全问题
    • keySetPool

      public final cn.wjybxx.base.pool.ObjectPool<ArrayDeque<String>> keySetPool
      字典key队列缓存池
    • stringBuilderPool

      public final cn.wjybxx.base.pool.ObjectPool<StringBuilder> stringBuilderPool
      字符串缓存池 -- 多线程下需要注意线程安全问题
    • binReaderSettings

      public final DsonReaderSettings binReaderSettings
      二进制解码设置
    • binWriterSettings

      public final DsonWriterSettings binWriterSettings
      二进制编码设置
    • textReaderSettings

      public final DsonTextReaderSettings textReaderSettings
      文本解码设置
    • textWriterSettings

      public final DsonTextWriterSettings textWriterSettings
      文本编码设置
    • SHARED_KEY_SET_POOL

      public static final cn.wjybxx.base.pool.ObjectPool<ArrayDeque<String>> SHARED_KEY_SET_POOL
      全局共享的key队列
    • DEFAULT

      public static ConverterOptions DEFAULT
      默认的Options
  • 构造器详细资料

  • 方法详细资料