我正在以JSON格式获取HTTP响应。使用JSON提取器,我能够提取精确的值,但我无法将它们存储在CSV文件中。
JSON回复
{
"success": true,
"vulns": [
{
"TYPE": "vuln",
"ID": "82003",
"FQDN": "",
"PORT": "",
"Table": "67696056"
},
{
"TYPE": "vuln",
"ID": "90067",
"FQDN": "",
"PORT": "",
"Table": "67696057"
},
{
"TYPE": "vuln",
"ID": "70000",
"FQDN": "",
"PORT": "",
"Table": "67696058"
},
{
"TYPE": "vuln",
"ID": "70032",
"FQDN": "",
"PORT": "",
"Table": "67696059"
},
{
"TYPE": "vuln",
"ID": "90042",
"FQDN": "",
"PORT": "",
"Table": "67696060"
}
]
}
这里我希望将所有ID存储在.csv文件中,以便将来使用它们。
我在beanshell postprocessor
import java.io.FileWriter;
String str=vars.get("ID");
FileWriter writer = new FileWriter("C:\\Softwares\\Installed\\jmeter-3.0\\bin\\ID.csv");
writer.write(str);
writer.close();
正在写文件,但所有ID都写在一行中,如
["82003","90067","70000","70032","90042"]
但我需要他们像
82003
90067
70000
70032
90042
调试后处理器响应数据
ID=["82003","90067","70000","70032","90042"]
有些人可以为我提供解决方案或BeanShell代码吗?
感谢, 维杰
答案 0 :(得分:0)
我相信你可以使用JSR223 PostProcessor和Groovy语言而不是JSON Extractor和Beanshell一举两得。
将以下代码放入PostProcessor的“脚本”区域:
import groovy.json.JsonSlurper
import org.apache.commons.io.FileUtils
def response = prev.getResponseDataAsString()
JsonSlurper slurper = new JsonSlurper()
def json = slurper.parseText(response)
def ID = json.vulns.ID
ID.each { FileUtils.writeStringToFile(new File("C:\\Softwares\\Installed\\jmeter-3.0\\bin\\ID.csv"), it + System.getProperty("line.separator"), true) }
您应该以您想要的格式生成文件。
参考文献:
答案 1 :(得分:0)
试试这个,它对我有用
ID=vars.get("ID");
FileWriter writer = new FileWriter("C:\\Softwares\\Installed\\jmeter-3.0\\bin\\ID.csv",true); // true to append
BufferedWriter out = new BufferedWriter(writer);
out.write(ID);
out.write(System.getProperty("line.separator"));
out.close();
writer.close();
答案 2 :(得分:0)
如果使用JSON Extractor提取确切的值,则可以使用以下代码在新行中写入变量。
s/>\s*\n\s*(\w.*\w)\s*\n\s*</>\1</
如果要在每个设置中创建新的新结果,请在FileOutputStream函数中使用'false'。将'true'添加到该测试计划的每次运行中的同一文件中