【问题标题】:Typed variable declaration : Class: JSONObject not found in namespace类型变量声明:类:在命名空间中找不到 JSONObject
【发布时间】:2021-03-04 16:03:25
【问题描述】:

我正在尝试从 Jmeter BeanShell 后处理器执行以下 JSON 代码,但出现错误 “类型变量声明:类:在命名空间中找不到 JSONObject”

我们使用的是 JMeter 5.3 版本,并且在 lib 和 lib\ext 中有 JSON jar 文件

import java.util.*;
import org.json.JSONObject;
import com.jayway.jsonpath.Criteria;
import com.jayway.jsonpath.Filter;
import com.jayway.jsonpath.JsonPath;


JSONObject cartItemsObj = (JSONObject) cartItems.get("C_cartItems");

log.info(cartItemsObj);

错误详情:

2021-03-03 20:55:19,967 错误 o.a.j.u.BeanShellInterpreter:调用 bsh 方法时出错:eval 源文件:内联评估:``import java.util.*;导入 com.jayway.jsonpath.Criteria;导入 com.jayway.json 。 . . '' : 类型变量声明 : Class: JSONObject not found in namespace

【问题讨论】:

  • 尝试删除import java.util.*;

标签: json jmeter


【解决方案1】:
  1. 为了能够使用JSONObject 类,您需要在JMeter Classpath 中拥有org.json.json 库

  2. 我看不到你在哪里以及如何获得cartItems 对象

  3. Since JMeter 3.1 you are supposed to use JSR223 Test Elements and Groovy language 用于脚本

  4. Groovy 具有内置的 JSON 支持,因此如果您想从响应中获取 C_cartItems 属性值(假设它存在于您从服务器获取的 JSON 的顶层),它可以简单地完成:

    cartItemsObj = new groovy.json.JsonSlurper().parse(prev.getResponseData()).C_cartItems
    
    log.info(cartItemsObj)
    

    演示:

更多信息:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-10
    • 2013-03-25
    • 2013-03-05
    • 1970-01-01
    • 2012-07-19
    • 1970-01-01
    相关资源
    最近更新 更多