Releases: noear/snackjson
Releases · noear/snackjson
Snack 3.2.72
- 修复 bindTo(obj) 可能会返回 null 的问题
- 优化
$.[?(@.field == 'l1-field-1')].children[?(@.field == 'l2-field-1')]兼容性 - 优化
$[?(@.field == 'l1-field-1')].children[?(@.field == 'l2-field-1')].fields[*]兼容性
Snack 3.2.69
- 修复
$..*[?(@.id)]可能出现 value 项 - 优化
$.*.*.*的兼容性
Snack 3.2.67
- 增加 Charset 反序化支持
- 增加类似 java record 类的参数与字段去重处理
Snack 3.2.65
- 增加 File 类型反序化支持
- 增加泛型多层嵌套支持: List<List>、Map<String,List>
- 增加 NodeAttr 注解对时区的配置支持
- 修复 "{names:null}" 转为 A{names:List} 时, 会变成 A{names:List=[null]} 的问题
- 修复非静态成员类序列化时会死循环的问题
- 添加特性(ParseIntegerUseLong),解析时可让所有整型为长整型
Snack 3.2.59
- 添加漂亮格式化特性支持
Snack 3.2.57
- 增加 selectOrNew() 接口;//只支持简单索引查询时orNew,不支持条件表达式和函数
示例:
@Test
public void case1(){
ONode oNode = new ONode();
oNode.selectOrNew("$.orders[0].price").val(500);
System.out.println(oNode.toJson());
//{"orders":[{"price":500}]}
assert "{\"orders\":[{\"price\":500}]}".equals(oNode.toJson());
oNode.selectOrNew("$.orders[10].price").val(600);
System.out.println(oNode.toJson());
//{"orders":[{"price":500},null,null,null,null,null,null,null,null,null,{"price":600}]}
oNode.select("$.orders").forEach(n->n.asObject());
System.out.println(oNode.toJson());
//{"orders":[{"price":500},{},{},{},{},{},{},{},{},{},{"price":600}]}
}Snack 3.2.56
- 增加指定 ClassLoader 支持
- 增加 ClassLoader 自动指定能力
- 增加 @NodeAttr 对 LocalTime,LocalDate,LocalDateTime 有效
Snack 3.2.54
- 增加 kotlin data 类支持
Snack 3.2.53
- 增加 getOrNew(int index, ONodeType newNodeType) 接口
- 增加 getOrNew(String key, ONodeType newNodeType) 接口
Snack 3.2.52
- 增加 SerializeNulls 对 Map/nullValue 的控制(之前默认认输出)
- 增加 SerializeMapNullValues 特性
- 增加 BooleanNullAsFalse 特性
- 增加 NumberNullAsZero 特性
- 增加 ArrayNullAsEmpty 特性
- 默认 features_def,不再包括 StringNullAsEmpty(旧的作用,也就只有 OValue::getString 上)