Jmeter——JSON Path Extractor

本文介绍如何在JMeter中使用jp@gc-JSON/YAMLPathExtractor插件从HTTP响应中提取JSON参数,适用于需要从前一请求响应中获取参数用于后续请求的场景。插件安装简便,使用灵活。

工作中遇到过需要从上一个请求返回的响应中获得下一个请求的参数,可能需要取响应中的一个参数,也有可能是多个参数。

大家首先想到的可能是正则表达式提取器,由于所在公司以及很多公司的http请求返回的是一个JSON串,所以本文简单介绍后置处理器中的一个第三方插件jp@gc-JSON/YAML Path Extractor,可以很方便的实现上述功能。

为了方便Jmeter插件的管理,首先安装一下Plugins Manager。

安装方法:

1、Download plugins-manager.jar and put it into lib/ext directory, then restart JMeter.

附上地址https://jmeter-plugins.org/install/Install/

2、重启后,在Options——Plugins Manager或者工具栏中的插件管理器图标即可打开

插件管理器入口

通过插件管理器进行第三方插件jp@gc-JSON/YAML Path Extractor的安装。

下图是已经安装后的展示

jp@gc-JSON/YAML Path Extractor存在JSON/YAML Plugins中

至此,插件安装完毕。

使用方法:

1、想要获取某请求响应下的参数,在其下添加后置处理器 —— jp@gc-JSON/YAML Path Extractor。获取多个参数值时,添加多个提取器即可;

jp@gc-JSON/YAML Path Extractor设置

JSONPath Expression的编写,我们可以根据 查看结果树中 的JSON Path Tester作简单的验证其是否正确。

JSON Path Expression编写正确与否的验证

2、下一个请求进行引用

引用从上一请求响应中获得的参数做下一个请求的请求参数

 

完毕!

<think>我们正在解决的问题是:如何根据find命令的结果设置CMake中的CMAKE_PREFIX_PATH以定位yaml-cpp库。 用户已经尝试过使用find命令查找yaml-cpp的路径,现在希望将这些路径用于CMake配置。 思路: 1. 使用find命令找到yaml-cpp的安装路径(包括头文件和库文件路径)。 2. 将这些路径设置为CMake变量,特别是设置CMAKE_PREFIX_PATH,因为CMake在查找包时会搜索该变量指定的路径。 3. 在CMakeLists.txt中使用find_package(yaml-cpp REQUIRED)来定位库。 注意:CMAKE_PREFIX_PATH是一个分号分隔的路径列表,类似于环境变量PATH。设置它可以让CMake在这些路径下查找包。 步骤详解: 步骤1:查找yaml-cpp的安装路径 我们可以使用以下命令查找yaml-cpp的安装路径(假设是Ubuntu系统): - 查找头文件路径(例如:yaml.h所在的目录,通常是yaml-cpp的父目录): find / -name yaml.h 2>/dev/null | grep yaml-cpp 例如输出:/usr/include/yaml-cpp/yaml.h 那么头文件所在目录为:/usr/include - 查找库文件路径(例如:libyaml-cpp.so所在的目录): find / -name 'libyaml-cpp*' 2>/dev/null 例如输出:/usr/lib/x86_64-linux-gnu/libyaml-cpp.so.0.8.0 那么库文件所在目录为:/usr/lib/x86_64-linux-gnu 步骤2:设置CMAKE_PREFIX_PATH 在CMake中,我们可以将找到的路径(头文件和库文件的父目录)添加到CMAKE_PREFIX_PATH中。但是注意,通常我们设置CMAKE_PREFIX_PATH为根路径,CMake会在这些路径的子目录中搜索(如<prefix>/include, <prefix>/lib等)。 因此,我们可以将头文件所在目录的父目录(即/usr)和库文件所在目录的父目录(即/usr/lib/x86_64-linux-gnu的父目录,即/usr)添加到CMAKE_PREFIX_PATH。实际上,由于yaml-cpp通常安装在系统目录(如/usr或/usr/local),这些路径默认就在CMake的搜索路径中。但如果我们安装在其他自定义路径,就需要设置。 例如,如果我们通过源码安装到/opt/yaml-cpp,那么我们可以将/opt/yaml-cpp添加到CMAKE_PREFIX_PATH。 步骤3:在CMakeLists.txt中设置 有两种方式设置CMAKE_PREFIX_PATH: a. 在CMake命令行中设置: cmake -DCMAKE_PREFIX_PATH=/path/to/yaml-cpp/root ... b. 在CMakeLists.txt中设置(不推荐,因为会硬编码路径): set(CMAKE_PREFIX_PATH "${CMAKE_PREFIX_PATH};/path/to/yaml-cpp/root") 步骤4:使用find_package 在CMakeLists.txt中,使用: find_package(yaml-cpp REQUIRED) target_link_libraries(your_target PRIVATE yaml-cpp) 如果CMake无法自动找到,我们还可以通过设置变量来指定路径: set(yaml-cpp_DIR "/path/to/yaml-cpp/lib/cmake/yaml-cpp") find_package(yaml-cpp REQUIRED) 注意:yaml-cpp_DIR应该是包含yaml-cpp-config.cmake或yaml-cppConfig.cmake文件的目录。 示例: 假设我们通过find命令发现yaml-cpp安装在/opt/yaml-cpp,那么: - 头文件在:/opt/yaml-cpp/include - 库文件在:/opt/yaml-cpp/lib - 配置文件在:/opt/yaml-cpp/lib/cmake/yaml-cpp 那么我们可以这样设置: cmake -DCMAKE_PREFIX_PATH=/opt/yaml-cpp ... 或者,如果知道具体的配置文件目录,也可以设置: cmake -Dyaml-cpp_DIR=/opt/yaml-cpp/lib/cmake/yaml-cpp ... 如果yaml-cpp是通过系统包管理器安装的,通常不需要设置CMAKE_PREFIX_PATH,因为CMake会默认搜索系统路径。 但是,如果用户使用find命令找到了非系统路径的yaml-cpp,那么就需要按照上述方法设置。 总结步骤: 1. 使用find命令定位yaml-cpp的安装路径(特别是头文件和库文件路径)。 2. 确定yaml-cpp的根目录(即包含include和lib的目录)或者包含CMake配置文件的目录(通常在lib/cmake/yaml-cpp下)。 3. 在运行CMake时,通过-DCMAKE_PREFIX_PATH=...指定根目录,或者通过-Dyaml-cpp_DIR=...指定配置文件目录。 注意:如果yaml-cpp没有提供CMake配置文件(例如,旧版本可能没有),那么我们就不能使用find_package,而是直接包含头文件和链接库,例如: include_directories(/path/to/yaml-cpp/include) link_directories(/path/to/yaml-cpp/lib) target_link_libraries(your_target PRIVATE yaml-cpp) 但是推荐使用find_package,因为更规范。 根据引用[1]:在CMakeLists.txt中链接yaml-cpp只需要: target_link_libraries(你的可执行文件名称 ${catkin_LIBRARIES} yaml-cpp) 但是前提是find_package已经成功找到了yaml-cpp。 因此,我们的重点是如何让find_package找到yaml-cpp,即设置正确的路径。 下面是一个完整的示例: 假设我们通过find命令发现yaml-cpp安装在/home/user/custom_install/yaml-cpp,那么: 在命令行中运行CMake时: cmake -DCMAKE_PREFIX_PATH=/home/user/custom_install/yaml-cpp ... 或者在CMakeLists.txt中(在find_package之前): set(CMAKE_PREFIX_PATH "${CMAKE_PREFIX_PATH};/home/user/custom_install/yaml-cpp") 然后: find_package(yaml-cpp REQUIRED) 如果还是找不到,可以尝试直接设置yaml-cpp_DIR: set(yaml-cpp_DIR "/home/user/custom_install/yaml-cpp/lib/cmake/yaml-cpp") find_package(yaml-cpp REQUIRED) 最后,链接到目标: target_link_libraries(your_target PRIVATE yaml-cpp) 注意:在设置yaml-cpp_DIR时,路径必须包含yaml-cpp的CMake配置文件(如yaml-cpp-config.cmake)。 如果用户不知道配置文件的位置,可以使用: find / -name "yaml-cpp-config.cmake" 2>/dev/null 来查找。 根据引用[4]:在Ubuntu中可以通过sudo apt-get install libyaml-cpp-dev安装,这样安装后通常不需要额外设置。 因此,如果用户是在非标准位置安装了yaml-cpp,才需要手动设置路径。 总结: 1. 如果yaml-cpp安装在标准系统路径(如/usr, /usr/local),则不需要设置CMAKE_PREFIX_PATH。 2. 如果安装在自定义路径,则设置CMAKE_PREFIX_PATH为该路径(包含include和lib的目录)或者设置yaml-cpp_DIR为包含配置文件的目录。 最后,我们可以通过查看CMakeCache.txt或CMake的输出信息来确认是否找到了yaml-cpp。</think>根据 `find` 命令的结果设置 `CMAKE_PREFIX_PATH` 来定位 yaml-cpp 库,请按以下步骤操作: ### 📌 步骤 1:查找 yaml-cpp 的安装路径 首先使用 `find` 命令确定库的安装位置: ```bash # 查找头文件路径 sudo find / -name yaml.h 2>/dev/null | grep yaml-cpp # 查找库文件路径 sudo find / -name 'libyaml-cpp*' 2>/dev/null ``` 典型输出: ``` /usr/local/include/yaml-cpp/yaml.h # 头文件 /usr/local/lib/libyaml-cpp.so.0.8.0 # 动态库 ``` ### ⚙ 步骤 2:提取根目录路径 从输出中提取根目录(去掉末尾的 `/include/yaml-cpp` 或 `/lib`): ```bash # 示例路径 头文件路径:/usr/local/include/yaml-cpp/yaml.h → 根目录:/usr/local 库文件路径:/usr/local/lib/libyaml-cpp.so → 根目录:/usr/local ``` ### 🔧 步骤 3:设置 CMake 变量 在 `CMakeLists.txt` 中设置路径(**二选一**): #### 方法 A:直接指定路径(硬编码) ```cmake # 在 find_package 前设置 set(yaml-cpp_DIR "/usr/local/lib/cmake/yaml-cpp") # 配置文件目录 # 或 set(CMAKE_PREFIX_PATH "/usr/local") # 根目录 ``` #### 方法 B:通过命令行参数动态设置(推荐) ```bash cmake -B build -Dyaml-cpp_DIR="/usr/local/lib/cmake/yaml-cpp" # 或 cmake -B build -DCMAKE_PREFIX_PATH="/usr/local" ``` ### 📝 步骤 4:完整 CMakeLists.txt 示例 ```cmake cmake_minimum_required(VERSION 3.10) project(MyProject) # 设置路径(如果未通过命令行设置) if(NOT DEFINED yaml-cpp_DIR) set(yaml-cpp_DIR "/usr/local/lib/cmake/yaml-cpp") # 替换为你的路径 endif() find_package(yaml-cpp REQUIRED) # 查找库 add_executable(my_app main.cpp) target_link_libraries(my_app PRIVATE yaml-cpp) # 链接库[^1] ``` ### 💡 关键说明 1. **路径优先级**: ```mermaid graph LR A[命令行参数] -->|最高优先级| B[CMakeLists.txt 中的设置] B --> C[系统默认路径 /usr /usr/local] ``` 2. **验证路径是否生效**: ```cmake find_package(yaml-cpp REQUIRED) message(STATUS "Found yaml-cpp at: ${yaml-cpp_DIR}") ``` 3. **路径类型对比**: | 设置方式 | 适用场景 | 示例值 | |-------------------------|-----------------------------------|---------------------------------| | `yaml-cpp_DIR` | 直接指向 CMake 配置文件目录 | `/usr/local/lib/cmake/yaml-cpp` | | `CMAKE_PREFIX_PATH` | 指向安装根目录(自动搜索子目录) | `/usr/local` | | `CMAKE_LIBRARY_PATH` | 仅指定库文件路径 | `/usr/local/lib` | | `CMAKE_INCLUDE_PATH` | 仅指定头文件路径 | `/usr/local/include` | > ⚠️ **注意**:若 yaml-cpp 是通过系统包管理器安装的(如 `apt install libyaml-cpp-dev`),通常无需手动设置路径,CMake 会自动在标准路径查找[^4]。 ### 🌐 多路径设置 如需添加多个搜索路径: ```cmake set(CMAKE_PREFIX_PATH "/opt/yaml-cpp;/usr/local;$ENV{HOME}/libs") ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值