Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays Jmeter-ArrayList中的JSON响应操作追加节点_Arrays_Json_Jmeter - Fatal编程技术网

Arrays Jmeter-ArrayList中的JSON响应操作追加节点

Arrays Jmeter-ArrayList中的JSON响应操作追加节点,arrays,json,jmeter,Arrays,Json,Jmeter,我得到了HTTP GET请求作为JSON对象的响应,我希望使用该JSON并将其传递给另一个HTTP请求。我得到了以下回应数据 { "settlementFolio": "0002", "settlementID": 283, "businessUnitID": 43, "routeID": 955, "chargeAmount": 22248.0000,

我得到了HTTP GET请求作为JSON对象的响应,我希望使用该JSON并将其传递给另一个HTTP请求。我得到了以下回应数据

{
  "settlementFolio": "0002",
  "settlementID": 283,
  "businessUnitID": 43,
  "routeID": 955,
  "chargeAmount": 22248.0000,
  "paymentAmount": 68560.6000,
  "isPaid": false,
  "hasValidCrewConfiguration": true,
  "settlementDate": "2020-09-21T00:00:00",
  "charged": 68560.6000,
  "packageRemain": 7500.0000,
  "totalBoxes": 280,
  "detail": [
    {
      "settlementTransactionID": 1,
      "settlementTransactionDescription": "1 Ventas Netas",
      "charge": 0.0,
      "payment": 61060.6000,
      "isAutomatic": true,
      "isForClient": false,
      "isCharge": false,
      "isChecked": false,
      "settlementTransactionClientDetail": [
        {
          "settlementTransactionID": 3456,
          "clientID": 392342,
          "saleNote": 11792,
          "amount": 30530.3000,
          "reference": "",
          "clientName": "OXXO NUEVA MAYAPAN",
          "isChecked": false
        },
        {
          "settlementTransactionID": 3456,
          "clientID": 391322,
          "saleNote": 11793,
          "amount": 30530.3000,
          "reference": "",
          "clientName": "OXXO CHICHI SUAREZ",
          "isChecked": false
        }
      ]
    }
  ],
  "productTypeCounter": [
    {
      "centralCostID": 1,
      "centralCostName": "Refrescos",
      "sellUnit": 280,
      "cNomina": 0.0000
    }
  ]
}
我需要用“settlementTransactionID”附加这样一个节点:2

我用的是这样的东西

String addMore = '${detail}';

def detail = new groovy.json.JsonSlurper().parseText(addMore);

detail.put(deposito);

vars.put("detail", new groovy.json.JsonBuilder(detail).toPrettyString());

log.info("",vars.get('detail'));
日志显示以下错误

020-09-23 09:09:25,857 ERROR o.a.j.e.JSR223PostProcessor: Problem in JSR223 script, JSR223 PostProcessor
javax.script.ScriptException: groovy.lang.MissingMethodException: No signature of method: java.util.ArrayList.put() is applicable for argument types: (org.apache.groovy.json.internal.LazyMap) values: [[settlementTransactionID:11, settlementTransactionDescription:11 Deposito de Efectivo, ...]]
Possible solutions: sum(), pop(), get(int), get(int), sum(java.lang.Object), plus(java.lang.Object)
    at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:320) ~[groovy-jsr223-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.jsr223.GroovyCompiledScript.eval(GroovyCompiledScript.java:71) ~[groovy-jsr223-3.0.3.jar:3.0.3]
    at javax.script.CompiledScript.eval(CompiledScript.java:89) ~[java.scripting:?]
    at org.apache.jmeter.util.JSR223TestElement.processFileOrScript(JSR223TestElement.java:222) ~[ApacheJMeter_core.jar:5.3]
    at org.apache.jmeter.extractor.JSR223PostProcessor.process(JSR223PostProcessor.java:45) [ApacheJMeter_components.jar:5.3]
    at org.apache.jmeter.threads.JMeterThread.runPostProcessors(JMeterThread.java:940) [ApacheJMeter_core.jar:5.3]
    at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:572) [ApacheJMeter_core.jar:5.3]
    at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:489) [ApacheJMeter_core.jar:5.3]
    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:256) [ApacheJMeter_core.jar:5.3]
    at java.lang.Thread.run(Thread.java:832) [?:?]
Caused by: groovy.lang.MissingMethodException: No signature of method: java.util.ArrayList.put() is applicable for argument types: (org.apache.groovy.json.internal.LazyMap) values: [[settlementTransactionID:11, settlementTransactionDescription:11 Deposito de Efectivo, ...]]
Possible solutions: sum(), pop(), get(int), get(int), sum(java.lang.Object), plus(java.lang.Object)
    at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:70) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.runtime.callsite.PojoMetaClassSite.call(PojoMetaClassSite.java:46) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:139) ~[groovy-3.0.3.jar:3.0.3]
    at Script158.run(Script158.groovy:31) ~[?:?]
    at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:317) ~[groovy-jsr223-3.0.3.jar:3.0.3]
    ... 9 more

我们无法帮助您,因为不清楚这些
${detail}
${deposito}
的含义和包含内容

如果您收到一张类似以下内容的
存款单

{
  "settlementTransactionID": 2,
  "settlementTransactionDescription": "2 Envase Faltante",
  "charge": 0.0,
  "payment": 7500.0000,
  "isAutomatic": true,
  "isForClient": false,
  "isCharge": false,
  "isChecked": false,
  "settlementTransactionClientDetail": [
    {
      "settlementTransactionID": 3461,
      "clientID": 0,
      "saleNote": null,
      "amount": 7500.0000,
      "reference": "202|75.00|100.000",
      "clientName": "",
      "isChecked": false
    }
  ]
}
您希望将其添加到某个采样器的响应中,并将结果存储到另一个JMeter变量中,您可以使用以下代码:

def originalResponse = new groovy.json.JsonSlurper().parse(prev.getResponseData())
originalResponse.detail.add(new groovy.json.JsonSlurper().parseText(vars.get('deposito')))
vars.put('modifiedResponse', new groovy.json.JsonBuilder(originalResponse).toPrettyString())
假设一切顺利,您将在
${modifiedResponse}
JMeter变量中获得所需的JSON负载

更多信息:


非常感谢您。抱歉,我没有真正解释“存款”,它包含您举例说明的另一个节点
def originalResponse = new groovy.json.JsonSlurper().parse(prev.getResponseData())
originalResponse.detail.add(new groovy.json.JsonSlurper().parseText(vars.get('deposito')))
vars.put('modifiedResponse', new groovy.json.JsonBuilder(originalResponse).toPrettyString())