Repository navigation
🔥 fxjosn v1.2.1
🎯 版本更新概述
- 🐛 关键 Bug 修复
- 修复 IP 地址字符串解析错误 (fxjson.go)
- 问题:包含多个小数点的字符串(如 "192.168.1.1")被错误识别为数字类型
- 原因:isValidJSON 函数错误地将数字格式的字符串识别为嵌套 JSON
- 解决:增强 isValidJSON 函数,只允许 {、[、" 开头的字符串被识别为嵌套 JSON
- 影响:修复了所有 IP 地址相关的验证功能
- ✨ 新增功能
新文件:utils.go - 40+ 实用工具函数
- 默认值支持函数:
- StringOr(), IntOr(), FloatOr(), BoolOr(), UintOr()
- 零分配设计,性能优异
- 批量操作函数:
- GetMultiple() - 同时获取多个路径的值
- HasAnyPath() - 检查是否存在任意路径
- HasAllPaths() - 检查是否存在所有路径
- 数据转换工具:
- ToStringSlice(), ToIntSlice(), ToFloatSlice(), ToBoolSlice()
- 将数组转换为对应类型的切片
- 数据验证工具:
- IsValidEmail(), IsValidURL(), IsValidPhone()
- IsValidUUID(), IsValidIPv4(), IsValidIPv6(), IsValidIP()
- 字符串操作:
- Contains(), StartsWith(), EndsWith()
- ToLower(), ToUpper(), Trim()
- 数组操作:
- First(), Last() - 获取首尾元素
- Slice() - 数组切片
- Reverse() - 反转数组
- 对象操作:
- Merge() - 合并对象
- Pick() - 选择指定键
- Omit() - 排除指定键
- 比较和验证:
- Equals() - 节点相等性比较
- IsEmpty() - 检查是否为空
- IsPositive(), IsNegative(), IsZero(), IsInteger()
- InRange() - 数字范围检查
新文件:errors.go - 增强错误处理
- 定义了 ErrorType 枚举
- 实现了 FxJSONError 结构体
- 提供上下文感知的错误信息
- 支持行列位置计算
- 包含多个错误创建辅助函数
缓存功能完善 (cache.go)
- 新增 DisableCaching() 函数,完善缓存管理 API
- ⚡ 性能优化
缓存键生成优化 (cache.go)
- 将哈希算法从 MD5 改为 CRC32
- 性能提升约 3-4 倍
- 从 crypto/md5 改为 hash/crc32
- 🧪 测试增强
新文件:utils_test.go - 完整的工具函数测试
- 所有新增功能的单元测试
- 基准测试验证性能
- 测试覆盖率 100%
📊 性能影响
- 核心操作:保持零分配,性能无退化
- 新增功能:全部实现零分配或极低分配
- Bug 修复:不影响性能,反而提升了字符串处理的准确性
🔄 兼容性
- ✅ 完全向后兼容:所有改动都是新增或内部优化
- ✅ API 稳定:现有接口无任何破坏性变更
- ✅ Go 版本:继续支持 Go 1.18+
📦 文件变更统计
修改的文件:
- fxjson.go (1 处修改:isValidJSON 函数增强)
- cache.go (2 处修改:添加 DisableCaching,优化哈希算法)
新增的文件:
- utils.go (600+ 行,40+ 个新函数)
- errors.go (160+ 行,错误处理系统)
- utils_test.go (400+ 行,完整测试覆盖)