Java 在JMeter中处理JSON响应
我正在从HTTP响应读取JSON数据,我需要放置一些由JSONPath提取的数据。我想要的数据是可以的,它在调试时显示,但我不能将其插入到需要修改的其他JSON对象中 问题是我不知道如何在JSON数组中插入新元素,无论我怎么做,都会得到错误“字段XXX无法访问”。我是JSON新手,希望您能给我一些建议 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
{
"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