首页
/ Malli 0.19.0版本发布:JSON转换与值生成的重大改进

Malli 0.19.0版本发布:JSON转换与值生成的重大改进

2025-06-30 08:58:45作者:秋阔奎Evelyn

Malli是一个功能强大的Clojure/Script数据验证和转换库,它提供了一种声明式的方式来定义数据结构、验证数据以及在不同格式之间进行转换。最新发布的0.19.0版本带来了几项重要改进,特别是在JSON转换和值生成方面的功能增强。

JSON转换器的重大改进

本次版本中最显著的变化是对json-transformer的改进,这是一个破坏性变更(BREAKING CHANGE)。在之前的版本中,json-transformer在处理:enum:=类型时,会将所有值编码为JSON字符串。而在0.19.0版本中,它现在能够更智能地推断出适当的编码器。

例如,对于模式[:enum 1 2 3],现在会被正确地编码为JSON数字,而不是字符串。这一改进使得JSON数据的转换更加符合开发者的预期,减少了类型转换带来的意外行为。

对于那些依赖于旧版本行为的应用程序,Malli提供了覆盖编码器和解码器的能力。开发者可以通过在模式属性中明确指定编码器来保持向后兼容性。这种灵活性确保了升级路径的平滑性,同时为需要精确控制转换行为的场景提供了解决方案。

值生成功能的增强

Malli的值生成功能在这个版本中也得到了显著增强。:+:*操作符现在支持生成器指令:gen/min:gen/max,以及模式指令:min:max。这意味着开发者现在可以更精确地控制生成值的范围。

例如,当需要生成一个包含1到10个元素的序列时,现在可以简单地使用这些指令来定义约束条件。这一改进特别适用于测试场景,开发者可以生成符合特定边界条件的测试数据,从而提高测试的覆盖率和有效性。

性能优化与问题修复

在性能方面,0.19.0版本对CLJS(ClojureScript)的包大小进行了优化,减少了生成的JavaScript代码体积。这对于前端应用尤为重要,因为更小的包大小意味着更快的加载时间和更好的用户体验。

此外,这个版本还修复了一个关于:default/fn的问题。现在,这个功能不仅可以在模式属性中使用,还可以在映射条目属性中正常工作。这一修复提高了Malli在处理默认值函数时的灵活性和一致性。

升级建议

对于正在使用Malli的项目,特别是那些重度依赖JSON转换功能的项目,建议在升级到0.19.0版本时进行充分的测试。虽然大多数情况下新版本的改进会带来更好的体验,但由于JSON转换行为的改变,某些特定场景可能需要调整。

对于值生成功能的增强,开发者可以考虑更新测试代码,利用新的生成器指令来创建更精确的测试数据。这不仅能够提高测试质量,还能帮助发现更多边界条件下的问题。

总的来说,Malli 0.19.0版本在保持库的核心价值的同时,通过一系列精心设计的改进,进一步提升了其作为数据验证和转换工具的实用性和灵活性。

登录后查看全文
热门项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
22
6
docsdocs
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
161
2.05 K
nop-entropynop-entropy
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
8
0
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
146
191
leetcodeleetcode
🔥LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解
Java
60
16
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
198
279
apintoapinto
基于golang开发的网关。具有各种插件,可以自行扩展,即插即用。此外,它可以快速帮助企业管理API服务,提高API服务的稳定性和安全性。
Go
22
0
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
949
556
ShopXO开源商城ShopXO开源商城
🔥🔥🔥ShopXO企业级免费开源商城系统,可视化DIY拖拽装修、包含PC、H5、多端小程序(微信+支付宝+百度+头条&抖音+QQ+快手)、APP、多仓库、多商户、多门店、IM客服、进销存,遵循MIT开源协议发布、基于ThinkPHP8框架研发
JavaScript
96
15
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
346
1.33 K