Java 在JMeter中处理JSON响应

Java 在JMeter中处理JSON响应,java,arrays,json,jmeter,Java,Arrays,Json,Jmeter,我正在从HTTP响应读取JSON数据,我需要放置一些由JSONPath提取的数据。我想要的数据是可以的,它在调试时显示,但我不能将其插入到需要修改的其他JSON对象中 问题是我不知道如何在JSON数组中插入新元素,无论我怎么做,都会得到错误“字段XXX无法访问”。我是JSON新手,希望您能给我一些建议 JSON类似于: { "background": null, "childInfos": [ ], "claimScope": 2, "customAttributeInf

我正在从HTTP响应读取JSON数据,我需要放置一些由JSONPath提取的数据。我想要的数据是可以的,它在调试时显示,但我不能将其插入到需要修改的其他JSON对象中

问题是我不知道如何在JSON数组中插入新元素,无论我怎么做,都会得到错误“字段XXX无法访问”。我是JSON新手,希望您能给我一些建议

JSON类似于:

 {
  "background": null,
  "childInfos": [

  ],
  "claimScope": 2,
  "customAttributeInfos": [

  ],
  "dueDate": 1459461540000,
  "instructions": null,
  "name": "Client_1-23456",
  "owners": [
    "4YESyxwCtA2YBncmM+tnEU5Ze6Fev8K3"
  ],
  "priority": 1,
  "referenceFilesInfos": [    

   ]

   ...

  "batchInfos": [
    {
      "name": "Batch1",
      "targetFormat": "TXML",
      "workflowTicket": "4YESyxwCtA3PqFg+3vJ6nE5Ze6Fev8K3",
      "targetLanguageInfos": [
        {
          "targetLanguageLocale": "de-DE",
          "dueDate": 1459461540000,
          "dueDateInfos": [
            {
              "phaseName": "AAAAAAAA",
              "dueDate": 1458645663900
            },
            {
              "phaseName": "BBBBBBB",
              "dueDate": 1459098928400
            },
            {
              "phaseName": "CCCCCC",
              "dueDate": 1459461540000
            }
          ],
          "organizationTmTicket": null
        }
      ],
      "fileInfos": [

      ]
现在,我动态地获取应该放在现有fileInfos数组中的对象

我尝试过via BeanShell:

JSONObject fajl = new JSONObject();     

fajl.put("repositoryTicket",vars.get("repTicket"));
fajl.put("name",vars.get("fileName"));
fajl.put("fileTargetFormat","TXML");
fajl.put("fileFormatTicket","4YESyxwCtA2glxeFIbqVOwNwQhim05Uq");
fajl.put("fileFormatName","Word");

String CEO = vars.get("CEO");
JSONObject pom = new JSONObject(CEO); - note1
pom.batchInfos[0].fileInfos[i-1].push(fajl); - note2
注1-CEO被解析为JSON,我需要它来处理下一个请求

注2-我有一个计数器,它跟踪处理的元素数量。我也尝试过这个没有计数器


对象fajl很好,我知道,但如何将其插入到该数组中?

尝试以下代码。您将能够在数组中添加对象

String jsonDataString = "{\"background\":null,\"childInfos\":[],\"claimScope\":2,\"customAttributeInfos\":[],\"dueDate\":1459461540000,\"instructions\":null,\"name\":\"Client_1-23456\",\"owners\":[\"4YESyxwCtA2YBncmM+tnEU5Ze6Fev8K3\"],\"priority\":1,\"referenceFilesInfos\":[],\"batchInfos\":[{\"name\":\"Batch1\",\"targetFormat\":\"TXML\",\"workflowTicket\":\"4YESyxwCtA3PqFg+3vJ6nE5Ze6Fev8K3\",\"targetLanguageInfos\":[{\"targetLanguageLocale\":\"de-DE\",\"dueDate\":1459461540000,\"dueDateInfos\":[{\"phaseName\":\"AAAAAAAA\",\"dueDate\":1458645663900},{\"phaseName\":\"BBBBBBB\",\"dueDate\":1459098928400},{\"phaseName\":\"CCCCCC\",\"dueDate\":1459461540000}],\"organizationTmTicket\":null}],\"fileInfos\":[]}]}";
            JSONObject mainObject = new JSONObject(jsonDataString);
            JSONObject fajl = new JSONObject();
            JSONArray list = new JSONArray();
            JSONArray batchInfos = mainObject.getJSONArray("batchInfos");
            JSONObject obj = batchInfos.getJSONObject(0);
            JSONArray fileInfos = obj.getJSONArray("fileInfos");
            for(int i=0;i<3;i++){
                fajl.put("repositoryTicket", i);
                fajl.put("name", i);
                fajl.put("fileTargetFormat", "TXML");
                fajl.put("fileFormatTicket", "4YESyxwCtA2glxeFIbqVOwNwQhim05Uq");
                fajl.put("fileFormatName", "Word");
                fileInfos.put(fajl);
            }
            System.out.println(mainObject);
String jsonDataString=“{\'background\”:null,“childInfos\”:[],“claimScope\”:2,“customattributeinfo\”:[],“dueDate\”:14594615400,\“instructions\”:null,“name\”:“Client\u 1-23456\,“owner\”:[“4YESyxwCtA2YBncmM+tnEU5Ze6Fev8K3\],“priority\”:1,“referenceFilesInfos\”,“batchInfos\”:“,“batchInfos\”,“:”,“targetxml\”,“:”,“,”,“,”,“,”,“[\”,“,”,“,“,”,”,“,”,“,”,“,“,”,“,”,“,“,”,“,““目标语言信息”部分:,,,,,,,,,“目标语言信息”部分:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,TMTicket\“:null}],\“fileInfos\”:[]}]}”;
JSONObject mainObject=新的JSONObject(jsonDataString);
JSONObject fajl=新的JSONObject();
JSONArray list=新的JSONArray();
JSONArray batchInfos=mainObject.getJSONArray(“batchInfos”);
JSONObject obj=batchInfos.getJSONObject(0);
JSONArray fileInfos=obj.getJSONArray(“fileInfos”);
对于(int i=0;i