XQPath
A modern jq-inspired path extractor and updater for structured data in Rust
🎯 概述
XQPath v1.4.1
一个高性能的 jq 风格结构化数据路径提取和更新库,提供完整的调试和性能分析功能。
双重形态
- Rust 库:嵌入到 Rust 项目中使用,提供丰富的宏和 API
- 命令行工具:功能强大的 CLI,支持 10+ 命令和彩色输出
✨ 核心特性
- 🚀 高性能路径提取:支持
.field、[index]、*、**等路径语法 - ⚡ 现代化 CLI:10+ 专用命令 (get, set, exists, type, count, length, keys, validate, convert, examples)
- 🎨 彩色输出:智能着色和格式化,提升使用体验
- 🔧 多格式支持:JSON、YAML 无缝切换和转换
- 📖 jq 兼容语法:熟悉的表达式语言,学习成本低
- 🛡️ 类型安全:完整的 Rust 类型系统支持
- 🔍 智能检测:自动格式检测和验证
� 安装
Cargo 安装 (推荐)
# 安装库
# 安装命令行工具
从源码编译
🚀 快速开始
库用法 - 便利宏
use ;
use json;
let data = json!;
// 查询多个值
let names = query!.unwrap;
// ["Alice", "Bob"]
// 查询单个值
let first_name = query_one!.unwrap;
// Some("Alice")
// 检查路径是否存在
let has_users = exists!.unwrap;
// true
// 计算数量
let user_count = count!.unwrap;
// 2
🖥️ 命令行工具 (v1.3.2 新特性)
XQPath 提供了功能强大的命令行工具,支持 10+ 专用命令:
核心命令
# 基本查询
|
# 路径检查
# 类型获取
# 计数和长度
# 获取键名
高级功能
# 格式验证
# 格式转换
# 显示用法示例
更新操作 (需要 update feature)
# 更新字段值
输出格式控制
# 指定输出格式
# 控制颜色和详细度
📖 表达式语法
基础语法
# 字段访问
# 数组操作
# 组合操作
高级表达式
# 管道操作(基础支持)
| | | # 获取值类型
# 比较操作
| ) # 条件过滤(语法支持)
| )
# 注意:部分高级功能仍在开发中
内置函数
length- 获取长度(数组、对象、字符串)keys- 获取对象键名或数组索引type- 获取值类型map(expr)- 数组映射(语法支持,实现开发中)select(condition)- 条件过滤(语法支持,实现开发中)sort(),sort_by(expr)- 排序操作(计划中)
🔧 实用宏系统
XQPath 提供了丰富的宏来简化常见操作:
基础查询宏
// 单值查询
let name = query_one!?;
let age = query_as_type!?;
// 多值查询
let names = query!?;
let emails = query_string!?;
// 存在检查
let has_email = exists!?;
let has_all = exists_all!?;
// 计数和类型
🔧 高级用法示例
复杂数据处理
use ;
// 基础表达式示例
let expr = parse_path_expression?;
let result = evaluate_path_expression?;
// 使用便利宏(推荐)
let names = query!?;
// 注意:高级聚合和条件查询功能正在开发中
错误处理
// 查询不存在的字段(返回 None)
let optional_field = query_one!?;
// 标准错误处理
match query!
🎯 v1.3.2 新特性总结
- 🚀 现代化 CLI: 10+ 专用命令,彩色输出,智能格式检测
- ⚡ 增强的命令: get, set, exists, type, count, length, keys, validate, convert, examples
- 🎨 更好的 UX: 详细/简洁输出模式,格式转换,交互式帮助
- 🔧 更强的 API: 丰富的宏系统,类型安全的查询接口
📚 更多资源
🤝 贡献与许可证
欢迎贡献代码和反馈!本项目采用 Apache-2.0 许可证。
XQPath v1.3.2 - 让结构化数据处理变得简单高效 🚀