# jsonpathpp **Repository Path**: gj1279/jsonpathpp ## Basic Information - **Project Name**: jsonpathpp - **Description**: C++实现的jsonpath - **Primary Language**: C++ - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 0 - **Created**: 2026-06-11 - **Last Updated**: 2026-06-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # jsonpathpp [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![C++ Standard](https://img.shields.io/badge/C%2B%2B-17-blue.svg)](https://en.cppreference.com/w/cpp/17) `jsonpathpp` 是一个基于 C++17 和 [Poco C++ Libraries](https://pocoproject.org/) 的 JSONPath 库,支持对 JSON 数据的**查询(Get)**、**修改(Set)**、**新增(Add)** 和 **删除(Del)** 操作。 ## 特性 - **标准 JSONPath 语法**:支持点号(`.key`)、方括号(`['key']` / `[0]`)、递归下降(`..`)、通配符(`*`)等 - **数组切片与步长**:支持 `[0:10]`、`[0:10:2]` 等语法 - **过滤器表达式**:支持 `[?(@.key > 10)]`、`[?(@.name == 'foo')]` 等条件过滤 - **完整的 CRUD 操作**:Get、Set、Add、Del - **线程安全**:内置互斥锁保护 - **支持静态库和动态库**:提供 `jsonpathpp`(静态库)和 `jsonpathpp_shared`(动态库) - **命令行工具**:提供 `jsonpathpp_test` 可执行文件,可快速从 JSON 文件中提取数据 ## 构建 ### 依赖 - **CMake** >= 3.14 - **Poco C++ Libraries** (需要 JSON、Foundation、Util 组件) - 支持 C++17 的编译器(如 GCC 8+、Clang 7+、MSVC 2017+) ### 编译步骤 ```bash # 准备步骤 sudo apt install libpoco-dev # 克隆仓库 git clone https://gitee.com/gj1279/jsonpathpp.git cd jsonpathpp # 创建构建目录 mkdir build && cd build # 配置 CMake cmake .. # 编译 cmake --build . ``` ## 快速上手 ### 命令行使用 ```bash # 从 JSON 文件中读取指定路径的值 ./jsonpathpp_test data.json "$.store.book[0].title" ``` ## JSONPath 语法支持 | 语法 | 说明 | 示例 | | --------------------------- | ---------------------- | -------------------------------- | | `$` | 根节点 | `$` | | `.key` | 点号访问子节点 | `$.store.book` | | `['key']` | 方括号访问子节点 | `$['store']['book']` | | `[0]` | 数组索引访问 | `$.store.book[0]` | | `[0,1,2]` | 离散索引 | `$.store.book[0,1]` | | `[0:5]` | 数组切片 | `$.store.book[0:5]` | | `[0:10:2]` | 数组切片(带步长) | `$.store.book[0:10:2]` | | `[*]` / `.*` | 通配符 | `$.store.book[*].title` | | `..` | 递归下降 | `$..author` | | `[?(@.price > 10)]` | 过滤器(大于) | `$.store.book[?(@.price > 10)]` | | `[?(@.isbn)]` | 过滤器(存在性检查) | `$.store.book[?(@.isbn)]` | | `&&` / `\|\|` | 逻辑与 / 逻辑或 | `[?(@.price > 10 && @.price < 50)]` | ### 支持的运算符 | 运算符 | 含义 | | ------ | -------- | | `>` | 大于 | | `<` | 小于 | | `==` | 等于 | | `>=` | 大于等于 | | `<=` | 小于等于 | | `!=` | 不等于 | ## 许可 本项目基于 [MIT License](LICENSE) 开源。