使用 Bean Shell 后处理器提取 JSON 响应

2023-12-06

我正在尝试使用 Beanshell 后处理器提取 JSON 数组的一个变量的值,但在日志中没有收到任何响应

我的 JSON 看起来像:

"store":
:   [
:   :   {
:   :   :   "storeId":12345,
:   :   :   "storeName":"ABC",
:   :   :   "storeAddress":"DEFGHIJKL",
:   :   :   "storeMinOrderAmount":100,
:   :   :   "mobile":"+911234567890",
:   :   :   "mobileSecondary":null,
:   :   :   "city":"Somewhere",
:   :   :   "pincode":123456,
:   :   :   "country":"India",
:   :   :   "email":"[email protected]",
:   :   :   "pickup":true,
:   :   :   "delivery":false,
:   :   :   "storeSplashPath":null,
:   :   :   "storeSplashType":null,
:   :   :   "distance":"0.10"
:   :   },

我的 Beanshell 后处理器是:

import org.apache.commons.lang3.StringUtils;
import org.json.JSONArray;
import org.json.JSONObject;
import com.eclipsesource.json.*;

print("*******************");

//Get Store total count
int totalStoreNumber = StringUtils.countMatches(new String(data), "storeId");
print("Total Number of Stores are: " + totalStoreNumber);

if (totalStoreNumber > 0) {
 //Check for Fulfilment type is "Pickup"
String jsonString = prev.getResponseDataAsString();
JsonObject store = JsonObject.readFrom(jsonString);
JsonArray store = store.get("store").asArray();
String pickup = store.get(1).asObject().get("pickup").asString();
vars.put("fulfilmentType_BSH", pickup);
print("Is Pickup allowed: " + pickup);
}
else {
 print("No Stores Nearby");
}

我不知道我哪里错了。我已阅读相关查询,但无法正确理解。 任何想法?


首先,你为什么不使用JSON 路径后处理器为了它?您可以使用单个简单的方法获得完全相同的结果JSON 路径表达式如:

$.store[0].pickup

如果出于某种原因你仍然需要在 Beanshell 中执行此操作,我有一些想法:

  1. 这绝对是错误。不能在 Beanshell 脚本中声明 2 个同名变量

    JsonObject store = JsonObject.readFrom(jsonString);
    JsonArray store = store.get("store").asArray(); 
    //        ^^^^^  ka-boom!
    
  2. 可能的问题。索引越界异常如果响应中只有 1 个商店。在 Beanshell 中,集合是从零开始的,第一个元素的索引为 0。

    String pickup = store.get(1).asObject().get("pickup").asString();
    //                        ^ ka-boom! 
    
  3. 另一个可能的问题可能与您的进口有关,以防万一

    import org.json.JSONArray;
    import org.json.JSONObject;
    import com.eclipsesource.json.*;
    

    你是否添加了相关的jarJMeter 类路径之后你重新启动JMeter了吗?您确定您使用的方法正确吗?

这是您使用重新实现的代码json-智能JMeter 3.0 附带(你不需要任何其他 jars)

import net.minidev.json.JSONArray;
import net.minidev.json.JSONObject;
import net.minidev.json.parser.JSONParser;
import org.apache.commons.lang.StringUtils;

//Get Store total count
int totalStoreNumber = StringUtils.countMatches(new String(data), "storeId");
log.info("Total Number of Stores are: " + totalStoreNumber);

if (totalStoreNumber > 0) {
    //Check for Fulfilment type is "Pickup"
    String jsonString = new String(data);
    JSONParser parser = new JSONParser(JSONParser.MODE_JSON_SIMPLE);
    JSONObject store = (JSONObject) parser.parse(data);
    JSONArray storeArray = (JSONArray) store.get("store");
    String pickup = ((JSONObject) storeArray.get(0)).getAsString("pickup");
    vars.put("fulfilmentType_BSH", pickup);
    log.info("Is Pickup allowed: " + pickup);
} else {
    log.info("No Stores Nearby");
}

及其工作的证据

Beanshell JSON demo

See 如何使用 BeanShell:JMeter 最喜欢的内置组件有关在 JMeter 测试中使用 Beanshell 脚本的更多信息的指南

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Bean Shell 后处理器提取 JSON 响应 的相关文章

  • 如何向我的 Spring MVC REST 服务添加错误?

    如果用户没有输入我正在编码的两个名称 我如何更改 更新来自 Spring MVC 的以下 REST 调用以返回错误 未找到 RequestMapping value name method RequestMethod GET Respons
  • 如何让Jmeter识别“localhost”URL?

    如何对只能由我的计算机访问的 localhost url 进行性能测试 我可以使用 jmeter 对 google 等实时网站进行性能测试 但 jmeter 无法检测本地 url 应用程序的 URL 192 168 121 20 80012
  • NodeJS:将 JSON 保存到 MongoDB

    我正在尝试从 API 获取 JSON 并将其存储到 MongoDB 数据库中 显然 这是行不通的 我的应用程序似乎停留在我尝试将数据保存到数据库的位置 请告知该怎么做 这是我的代码 var express require express v
  • OSError: [Errno 22] 当我尝试 .read() json 文件时

    我只是想用 Python 读取我的 json 文件 当我这样做时 我位于正确的文件夹中 我在 下载 中 我的文件名为 Books 5 json 但是 当我尝试使用 read 函数时 出现错误 OSError Errno 22 Invalid
  • 有人知道如何将 GMap Static JSON 转换为 HTML url?

    我已经从以下位置下载了示例样式的地图snazzymaps com http snazzymaps com 我尝试转换为类似的网址但我做得不好 我正在尝试改变下一个例子 Google 地图样式静态示例 http snazzymaps com
  • PostgreSQL:比较 json [重复]

    这个问题在这里已经有答案了 众所周知 目前 PostgreSQL 还没有方法来比较两个 json 值 比较就像json json不起作用 但是选角呢json to text before Then select x a y b json t
  • 如何通过 JsonConvert.DeserializeObject 在动态 JSON 中使用 null 条件运算符

    我正在使用 Newtonsoft 反序列化已知的 JSON 对象并从中检索一些值 如果存在 关键在于对象结构可能会不断变化 因此我使用动态来遍历结构并检索值 由于对象结构不断变化 我使用 null 条件运算符来遍历 JSON 代码看起来像这
  • Java GSON:获取JSONObject下所有键的列表

    我已经将 GSON 作为 Java 中的 JSON 解析器 但密钥并不总是相同 例如 我有以下 JSON 我已经知道的对象 键1 值1 键2 值2 AnotherObject anotherKey1 anotherValue1 anothe
  • 使用 ng-options 在 AngularJS 中使用 JSON 填充 select

    编辑 我的代码实际上确实有效 我只是一个有不相关问题的白痴 感谢大家的意见 所以我有一个 JSON 对象数组 格式如下 id id1 text text1 id id2 text text2 我想使用这些填充 AngularJS 选择字段
  • DbGeography 多边形到 JSON

    我将 DbGeography 多边形存储在数据库中 我的控制器从数据库获取多边形 我需要将它们转换为 JSON var polygons db Areas Where x gt x Type type Select x gt new Vie
  • Mandrill 验证错误

    很高兴能在 StackOverflow 上提出我的第一个问题 多年来我一直依靠它自学了很多东西 我的问题是这样的 尝试通过 Mandrill 的 API 发送邮件时出现以下错误 status error code 1 name Valida
  • 使用 Express.js 和 NodeJS,您可以通过响应正文中的重定向发送 JSON

    我正在尝试通过 302 重定向发送 JSON 在 ExpressJS 中这可能吗 API 声明可以添加主体res json 例如 res json 302 name larry 在接收端 重定向的目的地 主体是空的 这是一些示例代码 发送应
  • IE9 JSON 数据“您要打开还是保存此文件”

    开始使用 IE9 测试我的 jQuery 应用程序 看来我在这里可能遇到麻烦了 我注意到 当我将 JSON 数据返回到 Javascript 方法时 我总是收到此提示 您想打开或保存此文件吗 并为我提供了 3 个按钮 打开 保存和取消 当然
  • 如何在 Swift 中使用未知密钥解码 JSON 响应?

    我想将数据拆分为https blockchain info ticker https blockchain info ticker这样每一行都是它自己的String在一个数组中 我正在制作一个获取所选货币价格的应用程序 因此 如果有人想要澳
  • 将 JSON 反序列化为表

    我需要根据通过 API 接收的数据填充 ABAP 中的表 我正在使用以下 ABAP 函数从 json 填充现有的 ABAP 表 JSON 是正确的 表中包含相应的表 ui2 cl json gt deserialize EXPORTING
  • Flutter:将字符串转换为 Map

    我正在使用 SQFlite 在本地存储数据 我有一个表 其中有一个名为 json 的字段 该字段的类型为 TEXT 并存储转换为字符串的 json 例如 name Eduardo Age 23 性别男 到目前为止 一切正常 但随后我需要从数
  • Postgres JSONB:数组数组的 where 子句

    postgres 中有 v 9 5 如果有的话 create table json test id varchar NOT NULL data jsonb NOT NULL PRIMARY KEY id 其中 data 是 json 并且包
  • Ruby on Rails 服务器在 HTTPS POST 请求期间崩溃

    我正在尝试与你沟通城市飞艇API http urbanairship com docs push html broadcast使用 ROR Web 应用程序 在我的控制器中 我有以下代码 require net http require n
  • 如何在 select 和 option 标签中添加 JSON 数据?

    我有这个html代码 div class searchfilter div class searchwrapper div div
  • 来自 iPhone/iPad 的 json Web 服务

    有人可以帮助我解决如何从 iphone 或 ipad 使用 json Web 服务的问题吗 这里我的要求是使用 API 密钥实现 json webservice 如果可能的话发布一些教程或示例链接 谢谢 规范的 JSON 处理库是here

随机推荐

  • 有没有更好的方法来求数字乘法和求和?

    int N 2345 var digitArray N ToString ToCharArray int multiplicationSum 1 foreach char digit in digitArray multiplication
  • 如何标记因子但仍保留其原始水平值 - R

    我将这个问题分为两部分 第一部分是一般问题 第二部分是具体问题 首先 我想知道是否有一种可能的方法来标记数字因子但仍保留其原始数字级别 这特别令人困惑 因为我意识到当我们将标签参数传递给一个因子时 它就会变成该因子的级别 例如 x lt f
  • 我的网址是否以斜杠 (/) 结尾?我该如何使用 codeigniter 来做到这一点

    我正在尝试找出最合适的 从我读过的文章来看 似乎最好以斜杠结尾 url 所以而不是 http example url article 内容如下 http example url article 首先 我调整了 htaccess 以强制尾随斜
  • 在 Java 中组成 URL 或 URI 的惯用方法是什么?

    如何在 Java 中构建 URL 或 URI 有没有一种惯用的方法 或者可以轻松做到这一点的库 我需要允许从请求字符串开始 解析 更改各种 URL 部分 方案 主机 路径 查询字符串 并支持添加和自动编码查询参数 从 Apache HTTP
  • Node.js 开始读取文件的特定行

    在 Node js 上 我们可以使用以下命令逐行读取文件readline module var fs require fs var readline require readline var rl readline createInterf
  • Azure 广告在声明中返回角色,但 User.IsInRole 返回 false

    知道是什么原因造成的吗 我可以在 User Claims 中看到声明 我唯一能想到的是 来自 Azure Ad Roles 的声明返回的结果与 IsInRole 检查的内容不同 声明中显示的 CorpAdmin 角色 User IsInRo
  • 使用 ...(rest) 参数将参数从数组传递到 Actionscript 方法

    我的问题是这个问题的 Flex 换位 我可以将数组作为参数传递给 Java 中具有可变参数的方法吗 也就是说 我在一些 Actionscript 代码中有一个数组 我需要将数组中索引的每个对象传递到一个方法中method arguments
  • 从 ListView 的自定义适配器中的 URL 加载图像 (Android Studio)

    虽然位图似乎已正确获取 但变量 userBitmap 将保持为空 然而 当在我的平板电脑上向上或向下滚动时 新的列表行将包含图片 但它们都是相同的并且是错误的 真的 真的很困惑 我尝试了多种不同的方法从网络获取图像 任何帮助是极大的赞赏 我
  • 如何恢复初始 git 提交?

    我第一次提交到 git 存储库 然后我对这个承诺感到后悔并想恢复它 我尝试 git reset hard HEAD 1 我收到这条消息 fatal ambiguous argument HEAD 1 unknown revision or
  • Ajax,防止点击时出现多个请求

    当用户单击登录或注册按钮时 我试图阻止多个请求 这是我的代码 但它不起作用 第一次工作正常 然后返回 false do login click function e e preventDefault if this data request
  • C# - 从数据表中删除具有相同列值的行

    我有一个DataTable看起来像这样 ID Name DateBirth 1 aa 1 1 11 2 bb 2 3 11 2 cc 1 2 12 3 cd 2 3 12 这是删除具有相同 ID 的行的最快方法 以获得类似的结果 保留第一个
  • iterparse 无法解析某个字段,而其他类似的则可以

    我用Python的iterparse解析 nessus 扫描的 XML 结果 nessus 文件 对意外记录的解析失败 但类似的记录已被正确解析 XML 文件的一般结构是很多记录 如下所示
  • 不同的控制器有不同的布局文件

    如何使我的 ZF2 模块加载特定控制器的其他布局文件 考虑你有IndexController and AdminController在您的 ZF2 应用模块中和IndexController正在使用布局 phtml但你想用管理布局 phtm
  • 在目录中递归查找并替换文件名

    我想重命名以以下开头的文件夹中的所有文件123 xxx txt to xxx txt 例如我的目录有 123 xxx txt 123 yyy txt 123 zzz txt 我想将所有文件重命名为 xxx txt yyy txt zzz t
  • WKWebView 缩放以适合

    从 UIWebView 转移到 WKWebView 我无法弄清楚如何使用 WKWebView 大小上的 loadHTMLString 函数加载我正在加载的 HTML 以适应视图边界 我现在可以加载 html 但它超出了我视图的右侧和底部 如
  • Android:将视图拖到屏幕外

    我有一个活动 用户可以在一些按钮周围拖放 我所有的可拖动视图都在RelativeLayout为了拖动它们 我改变了它们的上边距和左边距 一切都很完美 除了当我将视图拖动到靠近屏幕的右侧和底部边缘时 它们会收缩而不是被绘制到屏幕之外 有什么方
  • 如何使用群组碰撞?

    所以我一直想知道如何使用 pygame groupcollide 我现在完全被难住了 因为我使用的是 collide rect 所以没问题 但对于 groupcollide 我似乎无法弄清楚如何调用该组内项目的属性 我不能进行碰撞 因为会有
  • FFmpegAndroid 库在压缩后旋转视频

    execFFmpegBinary new String y i 路径 s 160x120 r 25 vcodec mpeg4 b v 150k b a 48000 ac 2 ar 22050 文件路径 视频压缩后自动旋转 有什么解决办法吗
  • jQuery 代码在 IE 中不起作用

    我是 jQuery 的新手 正在尝试创建这一页 在我测试的所有浏览器中 当我单击红色按钮时 都会出现优惠券代码 IE 除外 为什么会出现这种情况 我该如何解决它 我真的很讨厌这个浏览器 JavaScript coupon button li
  • 使用 Bean Shell 后处理器提取 JSON 响应

    我正在尝试使用 Beanshell 后处理器提取 JSON 数组的一个变量的值 但在日志中没有收到任何响应 我的 JSON 看起来像 store storeId 12345 storeName ABC storeAddress DEFGHI