Solon v3.6.2

V3 to V4 兼容转换参考

</> markdown

1、接口变化对照表(没变化的不在列)

v3v4备注
loadObj(.)ofBean(.)加载 java bean
loadStr(.)ofJson(.)加载 json
ary()getArray()获取数组形态
obj()getObject()获取对象形态
val()getValue()获取值形态
val(.)setValue(.)设置值(Json 支持的值类型)
fill(.)fill(.)填充 java bean(可以是任何对象)
fillStr(.)fillJson(.)填充 json
forEach(.)getArray().forEach(.)遍历
getObject().forEach(.)遍历
toObject(.)toBean(.)转为 java bean
build(.)then(slf->{})然后(消费自己)
getRawXxx()getValue()
getValueAs()
count()size()
contains(.)hasKey(.)
hasValue(.)
removeAt(.)remove(.)
attrGet(.)/
attrSet(.)/
attrForeach(.)/
toData()toBean()
toObject()toBean()
toObjectList()toBean(new TypeRef<List<T>>(){})
toArray()toBean(new TypeRef<List<T>>(){})
---
stringify(.)serialize(.)序列化

2、特性变化对照表

v3v4备注
QuoteFieldNames/(默认有双引号)输出:为字段名加引号
/(默认无引号)Write_UnquotedFieldNames输出:字段名不加引号
UseSingleQuotesWrite_UseSingleQuotes输出:使用单引号输出
OrderedField/(默认有排序)存储:排序字段
WriteClassNameWrite_ClassName输出:写入类名。反序列化是需用到
NotWriteRootClassNameWrite_NotRootClassName输出:不写入根类名
WriteArrayClassName/输出:写入数组类名。反序列化是需用到
WriteDateUseTicks/(默认为 ticks)输出:日期用Ticks
WriteDateUseFormatWrite_UseDateFormat输出:日期用格式符控制
WriteBoolUse01Write_BooleanAsNumber输出:Bool用0或1替代
WriteNumberUseStringWrite_NumbersAsString输出:数字用字符串
/Write_BigNumbersAsString输出:大数字(long 或 double)用字符串。方便兼容JS
/Write_LongAsString输出:长整型用字符串
ParseIntegerUseLong/解析:整型使用长整
BrowserSecure/输出:浏览器安全处理(不输出<>
BrowserCompatibleWrite_BrowserCompatible输出:浏览器兼容处理(将中文都会序列化为\uXXXX格式,字节数会多一些)
TransferCompatible/(默认不输出)输出:传输兼容处理(不输出\)
/(默认输出)Write_UseRawBackslash输出:\
EnumUsingNameWrite_EnumUsingName输出:使用Enum的name输出
StringNullAsEmptyWrite_NullStringAsEmpty存储 or 输出:字符串Null时输出为空(get时用)
BooleanNullAsFalseWrite_NullBooleanAsFalse存储 or 输出:布尔Null时输出为空(get时用)
NumberNullAsZeroWrite_NullNumberAsZero存储 or 输出:数字Null时输出为空(get时用)
ArrayNullAsEmptyWrite_NullListAsEmptyText
StringFieldInitEmptyWrite_NullStringAsEmpty存储 or 输出:字符串字段初始化为空(返序列化时)
SerializeNullsWrite_Nulls输出:序列化Null
SerializeMapNullValuesWrite_Nulls输出:序列化Map/Null val
UseSetterWrite_AllowUseSetter使用设置属性
UseOnlySetterWrite_OnlyUseSetter只使用设置属性
UseGetterRead_AllowUseGetter使用获取属性
UseOnlyGetterRead_OnlyUseGetter只使用获取属性
DisThreadLocal/(没有线程缓存)禁止线程缓存
StringJsonToNodeRead_UnwrapJsonString存储 or 读取:当 value is json string 时,自动转为ONode
StringDoubleToDecimalRead_UseBigDecimalMode读取 Double 使用 BigDecimal
/Read_UseBigIntegerMode读取 Long 使用 BigInteger
PrettyFormatWrite_PrettyFormat输出:漂亮格式化
DisableClassNameRead/ (默认是禁用)禁用类名读取
/ (默认是启用)Read_AutoType读取数据中的类名(支持读取 @type 属性)
DisableCollectionDefaults/(没有默认值)禁用集合默认值

3、Json 定制

  • 全局 CodecLib(一般框架内部使用)
CodecLib.addCreator(.)
CodecLib.addDecoder(.)
CodecLib.addEncoder(.)
  • 局部 Options
Options.of().addCreator(.).addDecoder(.).addEncoder(.).addFeature(.)

4、JsonPath 定制

  • 函数
FunctionLib.register(.)
  • 操作符
OperationLib.register(.)